Windows Installer手引書 Part.1 はじめに

# Windows Installer手引書 目次
[Part.1 はじめに](#part1-はじめに)（本記事）
[Part.2 Component](https://qiita.com/tohshima/items/88a41ffcdbfaa18f3edc)
[Part.3 Directory](https://qiita.com/tohshima/items/44fa86262e40ec2751a2)
[Part.4 Feature](https://qiita.com/tohshima/items/1788a01745c631157a77)
[Part.5 ファイル拡張子の関連付け](https://qiita.com/tohshima/items/9c992f16d08f9b3b962d)
[Part.6 64bit版Windowsにおけるフォルダとレジストリ](https://qiita.com/tohshima/items/32e6130dd8158020bf75)
[Part.7 アップグレード・インストールの種類](https://qiita.com/tohshima/items/2dfa841cbab3d8488641)
[Part.8 次のバージョンを出す、こんな時どうする](https://qiita.com/tohshima/items/ea93453dd79cd833ef18)
[Part.9 プログラムの削除、変更、修復](https://qiita.com/tohshima/items/0a197917042d705e5568)
[Part.10 VCで作ったアプリとマージモジュール](https://qiita.com/tohshima/items/8175f25187b1a6183487)
[Part.11 シーケンス](https://qiita.com/tohshima/items/f5aca8154ec6bcead8cd)
[Part.12 カスタムアクションの種類](https://qiita.com/tohshima/items/1be9c0673b91dfae60ff)
[Part.13 カスタムアクションを実行させるタイミング](https://qiita.com/tohshima/items/8d1d7e702d58dc1429d2)
[Part.14 インストール、アンインストールの区別](https://qiita.com/tohshima/items/72d1e7602a48055c55f5)
[Part.15 カスタムアクションで外部コマンドを実行する](https://qiita.com/tohshima/items/ff300295c85dffc0af18)
[Part.16 C言語によるカスタムアクション１](https://qiita.com/tohshima/items/6ce1043eaa3f898d4a14)
[Part.17 C言語によるカスタムアクション２](https://qiita.com/tohshima/items/626b0462be9ea010621e)
[Part.18 カスタムアクションでダイアログボックスを表示する](https://qiita.com/tohshima/items/cfab9e289c7b1e190ad9)
[Part.19 カスタムアクションとインストールログ](https://qiita.com/tohshima/items/bb1a8401a620654569cb)
[Part.20 カスタムアクションとインストールの進捗表示](https://qiita.com/tohshima/items/d08ab298e57fd56e7bde)
[Part.21 WiX ToolsetのUIを改造する１](https://qiita.com/tohshima/items/2253710cf82be9a2d386)
[Part.22 WiX ToolsetのUIを改造する２](https://qiita.com/tohshima/items/9758f947e9567ad6ffa9)
[Part.23 インストール物が使用中だったらどうなる](https://qiita.com/tohshima/items/4e9f8133c5a14800c622)
[Part.24 ローカライズ](https://qiita.com/tohshima/items/71102ac002a45b819eeb)
[Part.25 インストール完了時の再起動](https://qiita.com/tohshima/items/e31e686f52873446497b)
[Part.26 アンインストール時にMSIファイル内のダイアログを使用する](https://qiita.com/tohshima/items/b04e658ffd7a14fe4e68)
[Part.27 フォルダをパースしてインストーラーのソースを作る１](https://qiita.com/tohshima/items/f8b0fa5a94189953b050)
[Part.28 フォルダをパースしてインストーラーのソースを作る２](https://qiita.com/tohshima/items/e7c44f5f15ff412d9d19)
[Part.29 コマンドを使った作業](https://qiita.com/tohshima/items/d5438cba97feb20e766b)
[Part.30 メンテナンスモードで3択の画面を出さないようにする](https://qiita.com/tohshima/items/7b65e253ce2d94dc4c23)
[Part.31 セットアップランチャーを作る](https://qiita.com/tohshima/items/a30f3c679ab30e3cf88f)
[Part.32 MSIのインストール進捗をInno Setupで表示する](https://qiita.com/tohshima/items/4c4e293c87b937ca5f14)
[Part.33 WiX Bundle](https://qiita.com/tohshima/items/f509498fbf23b9facc8b)
[Part.34 ２つのインストーラーで同じファイルを同じ場所にインストールする](https://qiita.com/tohshima/items/6f7a5e533824bf4f48f5)
[Extra.1 インストーラーの脆弱性](https://qiita.com/tohshima/items/74548cecdd99602c5753)


# はじめに
## 概要
 これから、Windows Installerの仕組みを使ったインストーラーの作成方法を解説していきます。

## 方針
- 基本的にWiX ToolsetやInno Setupを使ってインストーラーの作成を解説しますが、ツール自体の使用方法については最小限にとどめ、OSが持つインストーラーの仕組みであるWindows Installerの機能を中心に説明していきたいと思います。
- とは言え、ツールとして使用するWiX Toolsetがカバーする範囲も広いので、そういった部分も説明していきます。特に最初のうちは、WiX Toolsetの説明が中心になるでしょう。
- この記事では無料のツールを使用しますが、商用で利用しても問題ないツールを使用します。

## 対象環境
**[WiX Toolset v3](http://wixtoolset.org/releases/)** 
主にWiXを使用しますが、VisualStudioと共に使用すると、格段に使い勝手がよくなります。
**[VisualStudio](https://imagine.microsoft.com/ja-jp/Catalog/Product/530)**
新しいプロジェクトを作成する際のテンプレートが利用できたり、IntelliSenseによりキー入力が補完されたり、GUIでコマンドラインオプションを設定できたり、メリットが大きいので利用しない手はありません。また、このほかに下記のSDKもインストールすることをお勧めします。
**[Microsoft Windows SDK for Windows 7 and .NET Framework 4](https://www.microsoft.com/en-us/download/details.aspx?id=8279)**
Windows Installerはすでにレガシーな技術であり、サポートされる最後のSDKが上記のバージョンになります。Windows Installer向けのいくつかの便利なツールが同梱されており、MSDN(Microsoft Docs)の記事にもこれを持っていることを前提に書かれたものがあります。特に、このSDKに同梱されている"ORCA"は必携のアプリです。また、SDKだけでインストーラーを作成することもできます。もし、興味があるなら下記の記事を読んでみてください。
**[Windows Installer Examples](https://docs.microsoft.com/ja-jp/windows/desktop/Msi/windows-installer-examples)**
ただし、インストールウィザードに表示する文字列は英語版のみが最小限用意されているだけだったり、作成方法が難解でメンテナンス性に欠けるなど、通常の運用には問題が多いので、Windows Installerの内部を理解するために利用したほうが良いと思います。

## 開発環境作成上の注意
- ウィルス対策ソフト  
ウィルス対策ソフトによってWiXのコンパイラが".msi"ファイルを生成できないことがあります。このようなときはファイル拡張子を例外設定に加えることで回避できますが、ウィルス対策ソフトのパターン更新のタイミングで例外設定が解除されることがあります。心当たりのないコンパイルエラーで悩んだら疑ってみてください。私は、Pre-build Eventでウィルス対策ソフトの設定が格納されているレジストリを調べて、設定がクリアされていないかビルド毎に調べるようにしています。

## ドキュメント
- [WiX チュートリアル 日本語訳](http://wix-tutorial-ja.github.io/index.html)  
まずは、WiXの基礎を固めましょう。ただし、このチュートリアルを全て理解するにはWindows installerの知識が必要です。ビギナーはざっくり読み進めて、ツールの概略を理解すればよいです。
- [WiX Toolset Manual Table of Contents](http://wixtoolset.org/documentation/manual/v3/) (英語)  
WiXの本家ドキュメントです。最初は、エレメントの説明の前あたりまでざっくりと目を通して、何が書いてあるか把握しておけばよいと思います。
- [Windows Installer - Microsoft Docs](https://docs.microsoft.com/en-us/windows/desktop/Msi/windows-installer-portal) (英語)  
MicrosoftによるWindows Installerのドキュメントです。Windows Installerが難解な理由は、このドキュメントのわかりにくさ、説明不足、日本語版がないことにあります。
- [From MSI to WiX](https://learn.microsoft.com/en-us/archive/blogs/alexshev/from-msi-to-wix)  
最強のWiX解説記事だと思います。MSIの内容に踏み込んだ解説とサンプルコードが参考になります。
- [InstallShieldユーザーガイド](https://www.networld.co.jp/product/is/documentation/)  
最新版のInstallShieldのユーザーガイドが公開されています。日本語の貴重な資料です。Windows Installerの機能も日本語で説明されているので役に立ちます。

[**次の記事へ**](https://qiita.com/tohshima/items/88a41ffcdbfaa18f3edc)