■はじめに
今回はプログラムをインストーラーで配布できるようにします。
キーワード:VisualStudio2017, InstallerProjects, UAC
[注意]
これまでの回で説明済みの操作方法等は、説明を省略したり簡略化している場合があります。
■開発環境
- Windows 10 (バージョン1703)
- Visual Studio Community 2017
- .NET Framework 4.x
■拡張機能のインストール
以下のサイトからInstaller Projectsの拡張をダウンロードします。
Microsoft Visual Studio 2017 Installer Projects
■インストーラープロジェクトの追加
適当に何かプロジェクトを作り、ソリューションの「追加」 - 「新しいプロジェクト」を選択します。

「新しいプロジェクトの追加」画面で「その他のプロジェクトの種類」 - 「Visual Studio Installer」を選択し、「Setup Wizard」を選択します。

■インストーラープロジェクトの設定
◇ビルド設定
ソリューションを右クリック、「構成マネージャー」を選択し、インストーラープロジェクトの「ビルド」にチェックを入れます。

ソリューションエクスプローラーのDetected DependenciesからMicrosoft .NET Framework以外(使わないもの)を右クリックして「除外」します。

インストーラープロジェクトのプロパティ、PostBuildEventの「...」を選択します。

↓
「マクロ」ボタンを選択してBuildOutputPathをダブルクリックします。

以下のように書き換えます。
"C:\Program Files (x86)\Windows Kits\10\bin\x86\MsiInfo.exe" "$(BuiltOuputPath)" /W 10

MsiInfoのパスは環境に応じて書き換えてください。
パスは、Developer Command Prompt for VS 2017(開発者コマンドプロンプト)を起動し、

where msiinfoで確認しましょう。
※Windows 10でmsiinfoが見つからない場合、Visual Studio Installerで個別のコンポーネントからWindows 10 SDKを入れてください。
PostBuildEventはビルド後に実行される処理で、
MSIファイルを管理者権限不要でインストールできるように設定変更するコマンドを書いています。
※Program Files配下にインストールする等、管理者権限が必要なセットアップにしてしまった場合はMSIファイルの設定を変えても管理者権限は要求されます。
◇プロパティ設定
File SystemタブのApplication Folderを選択し、プロパティのDefaultLocationを
[LocalAppDataFolder][Manufacturer]\[ProductName]に設定します。

ソリューションエクスプローラーでインストーラープロジェクトを選択し、プロパティを設定します。

| プロパティ | 設定値 | 備考 |
|---|---|---|
| Auther | 作成者A | |
| Description | 説明BBB | |
| DetectNewerInstalledVersion | True | インストール時の新バージョンチェック |
| InstallAllUsers | False | すべてのユーザーにインストールするか |
| Localization | Japanese | |
| Manufacturer | 会社C | |
| ProductName | ソフトD | |
| RemovePreviousVersions | True | 古いバージョンの削除 |
| Subject | タイトルE | |
| Title | タイトルFF | |
| Version | 1.0.0 |
◇デスクトップのショートカット
File SystemタブのUser's Desktopを選択し、プロパティのAlwaysCreateをTrueに設定します。

User's Desktopを選択し、ツリー右の部分(Name, Type列のある領域)で右クリックし、「新しいショートカットの作成」を選択します。

Application Folderをダブルクリックします。

「プライマリ出力」が選択されているので「OK」を選択します。

↓
◇スタートメニューのショートカット
User's Programs Menuを右クリックし、「Add」 - 「Folder」を選択します。

フォルダ名をグループGに変更し、AlwaysCreateをTrueにし、グループGの右の領域で右クリック、「新しいショートカットの作成」を選択します。

■ビルド
ソリューションをReleaseビルドします。
Setup.exeとmsiファイルが出来上がるので、この2つを配布します。

■インストール
一般ユーザーでSetup.exeを実行してみます。
デスクトップとスタートメニューにショートカットが作成されました。
UACのダイアログを出さずにインストールすることができました。

ユーザーのLocalフォルダ配下にインストールされています。

■バージョンアップ
メインのプロジェクトを更新してバージョン情報も更新します。
(プロジェクトのプロパティ、「アプリケーション」の「アセンブリ情報」)

インストーラープロジェクトのVersionプロパティを更新します。
ProductCodeを更新するか聞いてくるので「はい」を選択し、ソリューションをリリースビルドします。

Setup.exeを起動してインストールすると新しいバージョンで上書きされます。

バージョンアップ時、上書きインストールできて最新版が起動できることは必ず確認しましょう。
設定を失敗していると、インストールが続行できなかったり、一見インストール成功したように見えても中身が古いバージョンのままになることもあります。
おしまい

















