wixAan de slag met wix


Opmerkingen

Wat is WiX?

Met de WiX-toolset kunnen ontwikkelaars installatieprogramma's maken voor Windows Installer, de Windows-installatie-engine. Het is open source en onderdeel van de .NET Foundation .

De kern van WiX is een set buildhulpmiddelen waarmee Windows Installer-pakketten worden gebouwd met dezelfde buildconcepten als de rest van uw product: broncode wordt gecompileerd en vervolgens gekoppeld om uitvoerbare bestanden te maken; in dit geval .exe-installatiebundels, .msi-installatiepakketten, .msm-samenvoegmodules en .msp-patches. De WiX-opdrachtregelbouwtools werken met elk geautomatiseerd buildsysteem. MSBuild wordt ook ondersteund vanaf de opdrachtregel, Visual Studio en Team Build.

WiX bevat verschillende extensies die functionaliteit bieden die verder gaat dan die van Windows Installer. WiX kan bijvoorbeeld IIS-websites installeren, SQL Server-databases maken en uitzonderingen registreren in onder andere Windows Firewall.

Met Burn, de WiX-bootstrapper, kunt u installatiebundels maken die vereisten zoals .NET Framework en andere runtimes samen met uw eigen product installeren. Met Burn kunt u pakketten downloaden of combineren in één downloadbare .exe.

De WiX SDK bevat beheerde en native bibliotheken die het gemakkelijker maken om code te schrijven die werkt met Windows Installer, inclusief aangepaste acties in zowel C # als C ++.

Hoe werkt WiX?

De WiX-broncode is geschreven in XML-formaat met een .wxs-bestandsextensie. De WiX-tools volgen het traditionele compileer- en linkmodel dat wordt gebruikt om uitvoerbare bestanden van broncode te maken.

Tijdens het bouwen worden de WiX-bronbestanden gevalideerd volgens het kern WiX-schema en vervolgens verwerkt door een preprocessor, compiler en linker om het uiteindelijke resultaat te creëren. Er is een set WiX-tools die kunnen worden gebruikt om verschillende uitvoertypen te produceren.

WiX-systeemvereisten

WiX ondersteunt zowel .NET 3.5 als 4.0 en hoger. WiX's MSBuild ondersteunt .NET 3.5, dat niet standaard wordt geïnstalleerd op Windows 8 en Windows Server 2012 en later.

In de volgende versie van WiX (v3.11) is .NET 4.0 vereist; bouwen met .NET 3.5 wordt niet langer ondersteund.

versies

Versie Releasedata
3.11 2017/05/05
3.10.3 2016/07/04
3.9 R2 2015/01/21
3.8 2013/11/28
3.7 2012/12/24
3.6 2012-09-03
3.5 2011-01-19
3.0 2009-06-19
2.0 2007-10-05

Installatie of instellingen

Download en installeer de WiX Toolset van wixtoolset.org .

Het installatieprogramma voor de WiX Toolset biedt ook de integratie met Visual Studio , na de installatie moet u WiX-specifieke projecten kunnen maken.

waarschuwingen

Beheerdersrechten zijn vereist.

Sommige versies van WiX zijn alleen compatibel met een bepaalde versie van Visual Studio:

  • V3.11 en daarna bevat de extensies voor Visual Studio niet, u moet de extensies downloaden voor uw versies van Visual Studio
  • V3.10 en lager werkt niet met Visual Studio 2017, maar bevat de projectsjablonen voor Visual Studio

Details

Het installatieprogramma is gebouwd met WiX zelf en presenteert een ongewoon venster: WiX-installatievenster

Het bestaat uit 6 delen:

  • WiX Toolset: toon de versie die door het installatieprogramma is geïnstalleerd en start de Wix Toolset-website met een klik

  • Licentie: toon de licentie

  • Installeren: start de installatie

  • Actueel: controleer of er een nieuwe versie beschikbaar is

  • Nieuws: start het WiX-nieuws

  • Exit: sluit het installatieprogramma

Eenvoudige installatie

In dit voorbeeld wordt ervan uitgegaan dat er al een oplossing met een toepassing met de naam MyApp bestaat.

  • Voeg een nieuw project toe aan de oplossing: Setup-project toevoegen
  • Voeg in het installatieproject een nieuwe verwijzing naar MyApp vanaf het tabblad Projecten: MyApp-referentie toevoegen
  • Product.wxs bestand Product.wxs het kenmerk Manufacturer van het Product met HelloWorld :
<Product Id="*" Name="MyApp.Setup" Language="1033" Version="1.0.0.0" Manufacturer="HelloWorld" UpgradeCode="52f2c69b-5901-4d18-bb96-8c1c86cd1a3e">
 

In het Fragment met de Directory , pak je de laatste in met een nieuwe Directory :

<Directory Id="ManufacturerFolder" Name="!(bind.property.Manufacturer)">
    <Directory Id="INSTALLFOLDER" Name="MyApp.Setup" />
</Directory>
 

Uncommenteer in de ComponentGroup knooppunt de becommentarieerde knooppunten en verwijder de TODO en voeg vervolgens een File in de Component :

<File Source="$(var.MyApplication.TargetPath)" />
 

Het kenmerk Source geeft aan waar het bestand voor verpakking moet worden gevonden tijdens de build. In plaats van harde codewaarden voor deze kenmerken in onze broncode, gebruiken we de WiX-preprocessorvariabelen die worden doorgegeven aan de WiX-compiler.

  • Bouw het WiX-project.

Dat is het! Nu hebt u een werkend installatieprogramma dat de toepassing installeert en verwijdert.


Volledig Product.wxs bestand:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="MyApp.Setup" Language="1033" Version="1.0.0.0" Manufacturer="HelloWorld" UpgradeCode="52f2c69b-5901-4d18-bb96-8c1c86cd1a3e">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />

        <Feature Id="ProductFeature" Title="MyApp.Setup" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="ManufacturerFolder" Name="!(bind.property.Manufacturer)">
                    <Directory Id="INSTALLFOLDER" Name="MyApp.Setup" />
                </Directory>
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <Component Id="ProductComponent">
                <File Source="$(var.MyApp.TargetPath)" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>