Praktische handleiding
Je eerste MSI-installer maken met WiX
Deze handleiding begint met één bestand, readme.txt, en eindigt met WixPieSample.msi. Bouw de meegeleverde broncode rechtstreeks met WiX en open dezelfde bron daarna in WixPie om de installereigenschappen visueel te bekijken.
1. Bereid Windows en de passende WiX-toolset voor
Gebruik een Windows-ontwikkelcomputer waarop WiX 3 of WiX 5 is geïnstalleerd. Kies één versie voor dit voorbeeld. De opdrachtregeltools van WiX 3 zijn candle.exe en light.exe; WiX 5 bouwt met wix build. Voer onderstaande opdrachten uit in een terminal die de gekozen tools kan vinden.
Maak een nieuwe lege map voor het voorbeeld. Download readme.txt en óf Product.wxs voor WiX 3 óf Package.wxs voor WiX 5 naar die map. Combineer de twee bronbestanden niet in dezelfde build.
Een compleet, klein MSI-voorbeeld
Kies de broncode voor je geïnstalleerde WiX-versie. Download die broncode en readme.txt naar dezelfde lege map. De twee bronnen maken gelijkwaardige 32-bits pakketten voor de hele computer en gebruiken geen WiX-extensies. Ze zijn gecompileerd met WiX 3.14 en WiX 5. De voorbeelden werken onafhankelijk van de visuele editor, zodat je ze ook rechtstreeks kunt bouwen.
Voorbeeldbestand downloaden: readme.txt
WiX 5 · Package.wxs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Package Name="WixPie Sample" Language="1033" Version="1.0.0"
Manufacturer="Example Company" UpgradeCode="8BE5A7F8-7C25-4DA8-B13F-42F53B670692"
Scope="perMachine">
<MajorUpgrade DowngradeErrorMessage="A newer version is already installed." />
<MediaTemplate EmbedCab="yes" />
<StandardDirectory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="WixPie Sample">
<Component Id="ReadmeComponent" Guid="*">
<File Id="ReadmeFile" Source="readme.txt" KeyPath="yes" />
</Component>
</Directory>
</StandardDirectory>
<Feature Id="MainFeature" Title="WixPie Sample" Level="1">
<ComponentRef Id="ReadmeComponent" />
</Feature>
</Package>
</Wix>
Bouwen vanuit de voorbeeldmap
wix build Package.wxs -arch x86 -o WixPieSample.msiWiX 3 · Product.wxs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="WixPie Sample" Language="1033" Version="1.0.0"
Manufacturer="Example Company" UpgradeCode="8BE5A7F8-7C25-4DA8-B13F-42F53B670692">
<Package InstallerVersion="500" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version is already installed." />
<MediaTemplate EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="WixPie Sample">
<Component Id="ReadmeComponent" Guid="*">
<File Id="ReadmeFile" Source="readme.txt" KeyPath="yes" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="MainFeature" Title="WixPie Sample" Level="1">
<ComponentRef Id="ReadmeComponent" />
</Feature>
</Product>
</Wix>
Bouwen vanuit de voorbeeldmap
candle.exe -arch x86 Product.wxs
light.exe -out WixPieSample.msi Product.wixobjDe UpgradeCode identificeert de upgradefamilie van dit voorbeeld. Maak voor een ander echt product een eigen UpgradeCode en houd die daarna gelijk voor volgende versies van dat product. Houd ook de component- en bestands-ID’s stabiel wanneer je een uitgebrachte installer onderhoudt.
2. Begrijp wat het pakket installeert
Beide versies definiëren een product met de naam WixPie Sample, versie 1.0.0, en plaatsen readme.txt in de map WixPie Sample onder Program Files voor de pakketarchitectuur. De bouwopdrachten kiezen x86; op een 64-bits Windows-testcomputer is dat doorgaans Program Files (x86). Het pakket geldt voor de hele computer en kan bij installatie om beheerderstoestemming vragen.
ReadmeComponent bevat het bestand en MainFeature verwijst naar dat component. KeyPath markeert het bestand waarmee Windows Installer de geïnstalleerde toestand van het component vaststelt. MediaTemplate neemt het cabinet met de bestanden op in de MSI, zodat dit kleine voorbeeld als één pakket verspreid kan worden.
3. Open dezelfde broncode in WixPie
Open WixPie Online en kies File → Open files… om het .wxs-voorbeeldbestand te selecteren. Kies een editortemplate die bij de bronversie past. Bekijk de product- of pakketnaam, versie, map, component en het bestand in de beschikbare pagina’s en het XML-voorbeeld.
Gebruik in een browsersessie Download current file om een bewerkte kopie te bewaren. Stel voor een lokaal project de Local Agent en extensie in, maak vanuit het document een .wixpie-project als die opdracht beschikbaar is en selecteer de passende geïnstalleerde toolset. Bewaar readme.txt naast de broncode zodat het relatieve Source-pad klopt.
4. Bouw, installeer en verwijder het voorbeeld
Voer de bouwopdrachten voor jouw WiX-versie uit in de voorbeeldmap. Een geslaagde build levert WixPieSample.msi op. Het pakket bouwen installeert het niet. Je kunt een ingesteld lokaal .wixpie-project ook via de verbonden agent bouwen.
Test de MSI in Windows Sandbox of een wegwerpbare virtuele Windows-machine. Voer msiexec /i WixPieSample.msi /l*v install.log uit, controleer of readme.txt in de installatiemap staat en verwijder het pakket via Geïnstalleerde apps of met msiexec /x WixPieSample.msi. Controleer daarna of het voorbeeldbestand is verwijderd.
Als de build mislukt
Lees de eerste compilerfout voordat je de broncode verandert. Bij dit voorbeeld zijn een ontbrekend bestand, de verkeerde werkmap of een verschil tussen bronformaat en toolset de meest voorkomende oorzaken.
- Bestand niet gevonden: bewaar readme.txt in de huidige voorbeeldmap naast het .wxs-bestand.
- Opdracht niet gevonden: gebruik een terminal die voor de geïnstalleerde WiX-toolset is ingesteld, of gebruik het volledige pad naar de tool.
- Onverwacht Product- of Package-element: gebruik het voorbeeld dat past bij WiX 3 of WiX 5.
- Lokaal bouwen niet beschikbaar in WixPie: controleer de extensie, agentverbinding, projectinstellingen en gekozen toolset.
Probeer deze werkwijze in WixPie
Open de browsereditor om een geschikte template te bekijken. Volg voor lokale bestanden en MSI-builds de installatie van de Local Agent en extensie op de downloadpagina.