Wixを利用したシンプルなインストーラーの作成手順を紹介します。
こちらの記事では、何もしないWiXのインストーラーを作成しました。この記事では、WiXインストーラーにインストールファイルを追加し、ファイルを実際にインストールできるインストーラーを作成します。
WiX Toolset をインストールします。インストール手順の詳細はこちらの記事を参照してください。
WiX Toolset Visual Studio 2017 Extension をインストールします。インストール手順の詳細はこちらの記事を参照してください。
WiXのSetup Projectを作成し、何もしないインストーラーを作成します。手順はこちらの記事を参照してください。
Procduct.wxs ファイルのProductタグのIdの値が "*" になっていますので、こちらにGUIDを設定します。GUIDの生成手順についてはこちらの記事を参照してください。"*"を記述すると、GUIDは自動生成になりますが、明示的な値にしておいてたほうがおすすめです。
GUIDは "B8D21526-447C-49F6-9868-24EFCDB02C25" の形式でも "{B8D21526-447C-49F6-9868-24EFCDB02C25}"のように中括弧で囲った文字列のどちらもサポートしています。
続いてインストールするファイルをプロジェクトに追加します。今回は、ソリューションエクスプローラのプロジェクトの直下の位置にファイルを配置しました。ファイル名は"Document.txt"とします。ファイル内容は下図の通りです。
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>
<?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"を指定します。
今回作成した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を利用したシンプルなインストーラーを作成できました。