MSI Pakete mit Wix

Einst fragte mich Guido mit was man denn am besten mal MSI-Pakete bauen könnte um seine Software Installieren und Deinstallieren zu können.
Wix war eines der Ergebnisse, die ich auf meiner Suche von Google bekam.

Hier der Wikipedia-Eintrag zu Wix
Und hier die Offizielle Wix-Seite auf SourceForge

Da wix nun eher nicht so einfach aussieht und die Config der XML Datei Manuell erfolgen muss, habe ich mich bis jetzt doch immer wieder geweigert es mir näher anzuschauen.
Erst jetzt wo ich gelesen habe, das Microsoft Wix auch Intern für eigene Produkte wie z.B. das Office Paket benutzt, scheint es doch sehr interessant und flexibel zu sein.

Ich möchte hier einfach mal ein Bespiel zeigen, indem ich meinen Teatimer in einem MSI Paket verpacke um es danach Installieren zu können.

Zu erst einmal die Wix-XML Datei (test.wxs)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0"?>
<!--
   Generated by WixTool 2.0 Pre-release
   http://wixtool.sourceforge.net/
 
   Copyright(C) 1996-2004 by 5Group
-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
	<Product 
		Id="411B624A-9AE0-45B1-A537-7EEC5C821221" 
		UpgradeCode="401D6A72-3010-4E69-AAF3-8E25D146EEA6" 
		Name="Teatimer" 
		Language="1033" 
		Version="1.0" 
		Manufacturer="My Company">
		<Package 
			Description="Noname Windows Installer package" 
			Comments="This is my new Windows Installer installation" 
			Manufacturer="My Company" 
			InstallerVersion="200" 
			Compressed="yes"/>
		<Media Id="1" Cabinet="Data1.cab" EmbedCab="yes"/>
		<Directory Id="TARGETDIR" Name="SourceDir">
			<Directory Id="ProgramFilesFolder" Name="ProgramFilesDir">
				<Directory Id="MainDir" Name="Noname">
					<Component Id="MainComponent" Guid="DC063BB6-E57A-43D2-8F6E-95BEE96201D8" DiskId="1">
						<CreateFolder/>
						<!-- Add some files here... -->
						<File Id="teatimer.exe" Name="teatimer.exe" Source="teatimer.exe"/>
						<File Id="teatimer.ini" Name="teatimer.ini" Source="teatimer.ini"/>
					</Component>
				</Directory>
			</Directory>
		</Directory>
		<Feature Id="MainFeature" Title="Noname" Level="1">
			<ComponentRef Id="MainComponent"/>
		</Feature>
	</Product>
</Wix>

Die Tags „Product“ und „Package“ enthalten Allgemeine Informationen über das Programm.
Interessant ist der untere Teil.
Zum einen der Abschnitt:

1
<Directory Id="MainDir" Name="Noname">

Welcher besagt das unser Programm im %Programme%\Noname\ installiert werden soll.
Und zum anderen ist auch folgender Abschnitt interessant:

1
2
3
<!-- Add some files here... -->
<File Id="teatimer.exe" Name="teatimer.exe" Source="teatimer.exe"/>
<File Id="teatimer.ini" Name="teatimer.ini" Source="teatimer.ini"/>

Welcher angibt, welche Dateien in das Verzeichnis hinein installiert werden sollen.

Nun bedarf es der Mühe 2er Programme, welche durch die Installationd es Wix-Toolkits mit installiert wurden:

1. candle.exe
Candle erzeugt aus der wsx Datei eine wixobj Datei.
Diese Datei ist zwar immernoch eine XML-Datei, aber etwas komplizierter aufgebaut.
Candle starten wir mit folgenden Aufruf:

"C:\Programme\Windows Installer XML v3\bin\candle.exe" test.wxs

2. light.exe
Light erstellt aus der wixobj Datei ein MSi_paket.
Light starten wir nun mit folgendem Aufruf:

"C:\Programme\Windows Installer XML v3\bin\light.exe" test.wixobj

Als Ergebnis erhalten wir eine „test.msi“ Datei, welche wir nun munter Installieren und Deinstallieren können.
Wenn ich diese Datei Installiere, wird sie in C:\Programme\Noname\ installiert – funktioniert also 🙂

Zusammengefasst habe ich das ganz hier acuh nochmal als zip-Download unter folgendem Link zur Verfügung gestellt:
http://frickelblog.de/downloads/wix.zip

Update: Unter http://wixedit.sourceforge.net gibt es auch einen Kostenlosen Editor, mit dem man schön gragfsch die Wix-XML Dateien erzeugen lassen kann 🙂

One Response to MSI Pakete mit Wix

  1.  

    Hallo Sven,

    ein gutes Buch zu diesem Thema ist „Inside Windows Installer 4.5“. Und dank Visual Studio Integration und Intellisense Unterstützung kommt man recht schnell in das Thema rein. Spannend finde ich zudem die Möglichkeit ganz einfach mit xml die Oberflächen zu gestalten und gleich noch Bedingungen zu definieren. Schade nur das es mir noch nicht gelungen ist auch eine Setup.exe erstellen zu lassen, die als Bootstrapper fungiert – was aber möglich sein soll.

leave your comment

*

Unterstütze den Frickelblog!