WiXツールセットを使用すると、WindowsインストーラーであるWindows Installerのインストーラーを作成できます。 オープンソースであり、 .NET Foundationの一部です。
WiXの中核は、他の製品と同じビルドコンセプトを使用してWindowsインストーラパッケージを構築する一連のビルドツールです。ソースコードをコンパイルしてリンクして実行可能ファイルを作成します。この場合は.exeセットアップバンドル、.msiインストールパッケージ、.msmマージモジュール、および.mspパッチが必要です。 WiXのコマンドラインビルドツールは、すべての自動ビルドシステムで動作します。また、MSBuildはコマンドライン、Visual Studio、Team Buildからサポートされています。
WiXには、Windows Installer以外の機能を提供するいくつかの拡張機能が含まれています。たとえば、WiXはIIS Webサイトをインストールし、SQL Serverデータベースを作成し、例外をWindowsファイアウォールに登録することができます。
WiXのブートストラップであるBurnを使用すると、.NET Frameworkや他のランタイムのような前提条件を自分の製品とともにインストールするセットアップバンドルを作成できます。 Burnを使用すると、パッケージをダウンロードしたり、ダウンロード可能な単一の.exeファイルに結合することができます。
WiX SDKには、C#とC ++の両方のカスタムアクションを含む、Windowsインストーラで動作するコードを簡単に記述できる管理ライブラリとネイティブライブラリが含まれています。
WiXソースコードはXML形式で、.wxsファイル拡張子で書かれています。 WiXツールは、ソースコードから実行可能ファイルを作成するために使用される従来のコンパイルおよびリンクモデルに従います。
ビルド時に、WiXソースファイルはコアWiXスキーマに対して検証され、プリプロセッサ、コンパイラ、およびリンカによって処理され、最終的な結果が作成されます。さまざまな出力タイプを生成するために使用できる一連のWiXツールがあります。
WiXは、.NET 3.5および4.0以降の両方をサポートしています。 WiXのMSBuildサポートには.NET 3.5が必要です.Windows 8およびWindows Server 2012以降にはデフォルトではインストールされません。
WiX(v3.11)の次のバージョンでは、.NET 4.0が必要です。 .NET 3.5を使用したビルドはサポートされなくなります。
バージョン | リリース日 |
---|---|
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月5日 |
wixtoolset.orgからWiX Toolsetをダウンロードしてインストールします。
WiX Toolsetのインストーラーは、 Visual Studioとの統合も提供します。インストール後、WiX固有のプロジェクトを作成できるはずです。
管理者権限が必要です。
WiXの一部のバージョンは、Visual Studioの特定のバージョンとのみ互換性があります。
インストーラはWiXを使用してビルドされ、珍しいウィンドウを表示します。
それは6つの部分で構成されています:
WiX Toolset:インストーラによってインストールされたバージョンを表示し、クリックしてWix Toolset Webサイトを起動します
ライセンス:ライセンスを表示する
インストール:インストールを開始する
Up To Date:新しいバージョンが利用可能かどうかをチェックする
ニュース: WiXニュースを開始する
終了:インストーラを閉じる
この例では、 MyApp
という名前のアプリケーションを含むソリューションが既に存在すると想定しています。
Product.wxs
ファイルで、 Product
ノードのManufacturer
属性をHelloWorld
ます。 <Product Id="*" Name="MyApp.Setup" Language="1033" Version="1.0.0.0" Manufacturer="HelloWorld" UpgradeCode="52f2c69b-5901-4d18-bb96-8c1c86cd1a3e">
Directory
ノードを含むFragment
ノードで、最後を新しいDirectory
でラップします。
<Directory Id="ManufacturerFolder" Name="!(bind.property.Manufacturer)">
<Directory Id="INSTALLFOLDER" Name="MyApp.Setup" />
</Directory>
ComponentGroup
ノードで、コメントの付いたノードのコメントを外し、 TODO
を削除してから、 Component
ノードにFile
ノードを追加しFile
。
<File Source="$(var.MyApplication.TargetPath)" />
Source属性は、ビルド中にパッケージングするファイルを見つける場所を指定します。これらの属性の値をソースコードにハードコードするのではなく、WiXコンパイラに渡されるWiXプリプロセッサ変数を使用します。
それでおしまい!これで、アプリケーションをインストールしてアンインストールする作業用インストーラが完成しました。
完全なProduct.wxs
ファイル:
<?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>