WiXを利用したシンプルなインストーラーの作成 - WiXインストーラーにインストールファイルを追加する
Wixを利用したシンプルなインストーラーの作成手順を紹介します。
概要
こちらの記事では、何もしないWiXのインストーラーを作成しました。この記事では、WiXインストーラーにインストールファイルを追加し、ファイルを実際にインストールできるインストーラーを作成します。
事前準備
WiX Toolsetのインストール
WiX Toolset をインストールします。インストール手順の詳細は
こちらの記事を参照してください。
WiX Toolset Visual Studio 2017 Extension のインストール
WiX Toolset Visual Studio 2017 Extension をインストールします。インストール手順の詳細は
こちらの記事を参照してください。
何もしないWiXインストーラーの作成
WiXのSetup Projectを作成し、何もしないインストーラーを作成します。手順は
こちらの記事を参照してください。
手順
Product IDの付与
Procduct.wxs ファイルのProductタグのIdの値が "*" になっていますので、こちらにGUIDを設定します。GUIDの生成手順については
こちらの記事を参照してください。"*"を記述すると、GUIDは自動生成になりますが、明示的な値にしておいてたほうがおすすめです。
GUIDは "B8D21526-447C-49F6-9868-24EFCDB02C25" の形式でも "{B8D21526-447C-49F6-9868-24EFCDB02C25}"のように中括弧で囲った文字列のどちらもサポートしています。
ファイルの追加
続いてインストールするファイルをプロジェクトに追加します。今回は、ソリューションエクスプローラのプロジェクトの直下の位置にファイルを配置しました。ファイル名は"Document.txt"とします。ファイル内容は下図の通りです。
wxsファイルの編集
wxsファイルを編集します。
編集前 : Product.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="iPentec" UpgradeCode="ad714548-35da-4122-b92e-f4cff276ffc7">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<!-- <Component Id="ProductComponent"> -->
<!-- TODO: Insert files, registry keys, and other resources here. -->
<!-- </Component> -->
</ComponentGroup>
</Fragment>
</Wix>
編集後 : Product.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="B8D21526-447C-49F6-9868-24EFCDB02C25" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="iPentec" UpgradeCode="ad714548-35da-4122-b92e-f4cff276ffc7">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="Component1" Guid="{BE0399F6-8287-44B9-8252-8017A4935BBB}" DiskId="1">
<File Id="File01" Name="Document.txt" Source="Document.txt"/>
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<ComponentRef Id="Component1" />
</ComponentGroup>
</Fragment>
</Wix>
解説
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" />
<Component Id="Component1" Guid="{BE0399F6-8287-44B9-8252-8017A4935BBB}" DiskId="1">
<File Id="File01" Name="Document.txt" Source="Document.txt"/>
</Component>
</DirectoryRef>
</Fragment>
上記コード部分が追加になります。インストールされるファイルに関する設定です。
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<ComponentRef Id="Component1" />
</ComponentGroup>
</Fragment>
上記コード部には "ComponentRef"タグを追記します。Idには、先に記述した、"Component”タグのID "Component1"を指定します。
補足:mediaタグ
今回作成したwxsファイルには、Mediaタグの記述はなく、<MediaTemplate />タグを利用しています。MediaTemplate タグを利用することで、標準的なMediaの設定がなされます。
プロジェクトのビルド
プロジェクトをビルドします。Visual Studioの[ビルド]メニューの[ソリューションのビルド]をクリックします。
今回はファイルが存在するため、ワーニングは発生せずビルドが完了します。
ビルド出力先(プロジェクトディレクトリのbin\debug ディレクトリ)を確認します。msiファイルとcabファイルが出力されています。
インストーラーの実行
msiファイルを実行します。下図のウィンドウが表示され、ファイルのインストールが始まります。ファイルのインストールが完了すると、ウィンドウは閉じられます。
[プログラムと機能]のプログラムのアンインストールを表示します。今回作成した"SetupProject1"がインストールされているプログラム一覧に表示されています。
ファイルがインストールされているか確認します。Program Files ディレクトリ(64ビット版Windowsで x86の設定でWiXプロジェクトをビルドしていた場合は、Program Files (x86)ディレクトリ)の"SetupProject1"ディレクトリを開きます。
"SetupProject1"ディレクトリ内に、Document.txtファイルがインストールされていることが確認できます。
ファイル内容も問題ありません。
アンインストールの実行
アンインストールしてファイルが削除されるか確認します。
コントロールパネルの[プログラム]カテゴリの[プログラムのアンインストール]を開きます。下図の画面が表示されます。リストに先ほどインストールした"SetupProject1"がありますので、こちらをクリックして選択し、上部のツールバーの[アンインストール]をクリックします。
下図のダイアログが表示され、アンインストールの確認があります。[はい]ボタンをクリックしてアンインストールを開始します。
アンインストールが始まります。
アンインストールが完了すると、アンインストールできるプログラム一覧からも削除されます。
"Program Files"のディレクトリからも削除されていることが確認できます。
WiXを利用したシンプルなインストーラーを作成できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用