Looking for wix Answers? Try Ask4KnowledgeBase
Looking for wix Keywords? Try Ask4Keywords

wixwixを使い始める


備考

WiXとは何ですか?

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はどのように機能しますか?

WiXソースコードはXML形式で、.wxsファイル拡張子で書かれています。 WiXツールは、ソースコードから実行可能ファイルを作成するために使用される従来のコンパイルおよびリンクモデルに従います。

ビルド時に、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の特定のバージョンとのみ互換性があります。

  • V3.11以降にVisual Studioの拡張機能が含まれていない場合、Visual Studioのバージョンの拡張機能をダウンロードする必要があります
  • V3.10以下はVisual Studio 2017では動作しませんが、Visual Studio用のプロジェクトテンプレートが含まれています

詳細

インストーラはWiXを使用してビルドされ、珍しいウィンドウを表示します。 WiXインストーラウィンドウ

それは6つの部分で構成されています:

  • WiX Toolset:インストーラによってインストールされたバージョンを表示し、クリックしてWix Toolset Webサイトを起動します

  • ライセンス:ライセンスを表示する

  • インストール:インストールを開始する

  • Up To Date:新しいバージョンが利用可能かどうかをチェックする

  • ニュース: WiXニュースを開始する

  • 終了:インストーラを閉じる

シンプルセットアップ

この例では、 MyApp という名前のアプリケーションを含むソリューションが既に存在すると想定しています。

  • 新しいプロジェクトをソリューションに追加します。 セットアッププロジェクトを追加
  • セットアッププロジェクトで、[プロジェクト]タブからMyApp への新しい参照を追加します。 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プリプロセッサ変数を使用します。

  • 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>