Praktische handleiding
WiX-snelkoppelingen en bestandskoppelingen: voorbeelden voor WiX 3 en WiX 5
Een snelkoppeling start een geïnstalleerd programma. Een bestandskoppeling vertelt Windows welk programma een documenttype kan openen. Deze handleiding koppelt beide aan één programma en laat zien hoe je dezelfde broncode in WixPie bekijkt.
1. Begin met een werkend programma
Gebruik een kopie van een programma dat je zelf bezit en kunt testen. Het voorbeeld noemt dit MyApp.exe en registreert de ongebruikelijke extensie .wpxsample. Kies passende ID’s, een productnaam en een extensie voor je echte product voordat je de broncode aanpast.
Houd de WiX-familie gelijk: WiX 3 gebruikt Product en Directory; WiX 5 gebruikt Package en StandardDirectory in de v4-XML-namespace. Download alleen de passende bron. De opdrachten kiezen x86. Pas voor een echt 64-bits programma de architectuur en componenten samen aan.
Complete broncode voor snelkoppelingen en bestandskoppelingen
Kies WiX 3 of WiX 5 en bewaar de bijbehorende Shortcuts.wxs naast je eigen MyApp.exe. Het programma is niet inbegrepen: het moet zelfstandig werken en als eerste argument een documentpad accepteren. Dit zijn 32-bits MSI-bronnen voor de hele computer, met beide toolsets gecompileerd met een klein testprogramma. Voeg vóór verspreiding ook de afhankelijkheden van je echte applicatie toe.
WiX 5 · Shortcuts.wxs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Package Name="WixPie Association Sample" Language="1033" Version="1.0.0"
Manufacturer="Example Company" UpgradeCode="69C94E05-1F80-4127-B5E6-9B0260D7E462"
Scope="perMachine">
<MajorUpgrade DowngradeErrorMessage="A newer version is already installed." />
<MediaTemplate EmbedCab="yes" />
<StandardDirectory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="WixPie Association Sample">
<Component Id="AppComponent" Guid="*">
<File Id="AppFile" Source="MyApp.exe" KeyPath="yes">
<Shortcut Id="AppShortcut" Directory="AppMenuFolder" Name="WixPie Association Sample"
Advertise="yes" WorkingDirectory="INSTALLFOLDER" />
</File>
<ProgId Id="Example.WixPieSample.Document" Description="WixPie sample document" Advertise="no">
<Extension Id="wpxsample" ContentType="application/x-wpxsample" Advertise="no">
<Verb Id="open" Command="Open" TargetFile="AppFile" Argument=""%1"" />
</Extension>
</ProgId>
<RemoveFolder Id="RemoveAppMenuFolder" Directory="AppMenuFolder" On="uninstall" />
</Component>
</Directory>
</StandardDirectory>
<StandardDirectory Id="ProgramMenuFolder">
<Directory Id="AppMenuFolder" Name="WixPie Association Sample" />
</StandardDirectory>
<Feature Id="MainFeature" Title="WixPie Association Sample" Level="1">
<ComponentRef Id="AppComponent" />
</Feature>
</Package>
</Wix>
Bouwen vanuit de voorbeeldmap
wix build Shortcuts.wxs -arch x86 -o AssociationSample.msiWiX 3 · Shortcuts.wxs
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="WixPie Association Sample" Language="1033" Version="1.0.0"
Manufacturer="Example Company" UpgradeCode="69C94E05-1F80-4127-B5E6-9B0260D7E462">
<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 Association Sample">
<Component Id="AppComponent" Guid="*">
<File Id="AppFile" Source="MyApp.exe" KeyPath="yes">
<Shortcut Id="AppShortcut" Directory="AppMenuFolder" Name="WixPie Association Sample"
Advertise="yes" WorkingDirectory="INSTALLFOLDER" />
</File>
<ProgId Id="Example.WixPieSample.Document" Description="WixPie sample document" Advertise="no">
<Extension Id="wpxsample" ContentType="application/x-wpxsample" Advertise="no">
<Verb Id="open" Command="Open" TargetFile="AppFile" Argument=""%1"" />
</Extension>
</ProgId>
<RemoveFolder Id="RemoveAppMenuFolder" Directory="AppMenuFolder" On="uninstall" />
</Component>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="AppMenuFolder" Name="WixPie Association Sample" />
</Directory>
</Directory>
<Feature Id="MainFeature" Title="WixPie Association Sample" Level="1">
<ComponentRef Id="AppComponent" />
</Feature>
</Product>
</Wix>
Bouwen vanuit de voorbeeldmap
candle.exe -arch x86 Shortcuts.wxs
light.exe -out AssociationSample.msi Shortcuts.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.
3. Registreer het documenttype en citeer het pad
ProgId identificeert de documentklasse. Extension gebruikt wpxsample zonder punt ervoor. De open-Verb verwijst naar AppFile. De XML-geëscapete aanhalingstekens rond %1 houden een documentpad met spaties bij elkaar als één opdrachtregelargument. Je programma moet dat argument zelf kunnen openen.
Deze bestandskoppeling gebruikt geen advertising. Registratie betekent niet automatisch dat Windows je applicatie als huidig standaardprogramma instelt. Gebruikerskeuzes en de Windows-instellingen voor standaardapps blijven gelden. Overschrijf geen beschermde UserChoice-instellingen om een standaard af te dwingen.
4. Bekijk de broncode in WixPie
Open Shortcuts.wxs met File → Open files… en selecteer een passende WiX 3- of WiX 5-template. Bekijk de eigenschappen die deze template aanbiedt en controleer het XML-voorbeeld. De beschikbare visuele bewerkingen hangen af van de gekozen template.
Verbind voor een lokale build de Local Agent en extensie en behoud de applicatiebestanden en bronpaden. Bewaar de oorspronkelijke broncode in versiebeheer. Controleer wijzigingen in Shortcut, ProgId, Extension, Verb en ComponentRef voordat je een bestaande installerdefinitie vervangt.
5. Controleer installeren, openen en verwijderen
Bouw met de passende toolset en installeer in Windows Sandbox of een wegwerpbare Windows-testmachine. Dit pakket voor de hele computer kan beheerderstoestemming vragen. Start de Startmenu-snelkoppeling en controleer of het geïnstalleerde programma opent.
Maak een document met spaties in het pad, bijvoorbeeld Documents\Sample folder\first file.wpxsample. Selecteer je programma zo nodig met Openen met of de Windows-instellingen voor standaardapps. Controleer of het volledige pad aankomt. Verwijder het pakket en controleer of de snelkoppeling, eigen bestandsregistraties en applicatiebestanden verdwijnen.
Een geslaagde compilercontrole valideert de MSI-bron. Het bewijst niet dat je programma documenten goed opent of dat upgrades gebruikersvoorkeuren behouden. Test upgrades en verwijderen met de echte applicatie voordat je de installer verspreidt.
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.