宇宙仮面の
C# Programming

 

Imageインストーラの作成(ディプロイメント)

1.目次

  1. 目次
  2. 目的
  3. 参考書
  4. インストールプロジェクトの追加
  5. スタートメニューへのショートカットの作成
  6. インストールのテスト
  7. リリース版の作成

2.目的

Windows.Forms のインストーラの作成についてまとめます。

.Net ベースのインストーラを作ったことが無かったので、実際に作ってみて、アイコンの設定や、流れを確認するのが目的です。
このため、以下の例での実行ファイルは1つの exe ファイルしかない、非常にシンプルなものにしてあります。
このような1つの exe ファイルにあえてインストーラをつける必要はありません。

3.参考書

  1. VisualStudio.NET のヘルプ:  チュートリアル : Windows アプリケーションの配置
  2. MSDN

4.インストールプロジェクトの追加

まず、Windows.Forms アプリケーション Deployment (名前は任意) を作ります。
このとき、エクスプローラはデフォルトで次のようになっていると思います。

Image

ここで、アイコンファイルは アプリケーションのアイコンの設定のように、16x16, 32x32, 48x48 のアイコンを設定します。

次にソリューションエクスプローラより、ソリューション 'Deployment' を選択し、右クリックします。
コンテキストメニューより、追加→新しいプロジェクトの追加を選択します。
すると、次のような「新しいプロジェクトの追加」 ダイアログが表示されます。
ここで、左ペインより、セットアップ/デプロイメント プロジェクト、右ペインより 『セットアップ ウィザード』を選択します。

Image

すると、次のようにセットアップ ウィザードがスタートします。
Image

次に、Windows アプリケーションのセットアップを作成するを選択します。(下図)
Image

次に、含めるプロジェクト出力グループ(W)で、プライマリ出力を選択します。(下図)
これにより、exe, dll がインストールされるようになります。
Image

次に、含めるファイルの選択で、必要に応じて含めるファイルを選択します。(下図)
ここでは、何も含めていません。
Image

最後にプロジェクトの作成で、内容を確認をし、完了ボタンを押します。
これにより、次のように DeploymentSetup が作成されます。

Image

次に、作成されたセットアッププロジェクトのプロパティウィンドウを表示します。(下図)
このうち、Author, Manufacturer, ManufacturerUrl, Title, Version などを設定します。

Image

インストールパスは、C:\Program Files\Manufacturer\ProductName\になります。
このため、Manufacturer、ProductName を正しく設定しないと、期待しないところにインストールされてしまいます。

プロパティ説明
AddRemoveProgramsIconプログラムの追加と削除ダイアログに表示するアイコン
Authorアプリケーションまたはコンポーネントの作成者の名前
Descriptionインストーラの説明
DetectNewerInstalledVersionインストール時にアプリケーションの新しいバージョンをチェックするかどうか
FriendlyNameCab プロジェクトの .CAB ファイルのパブリック名
Keywordsインストーラの検索に使用するキーワード
Localizationロケールとランタイム ユーザー インターフェイスを指定
Manufacturerアプリケーションまたはコンポーネントのメーカー名
ManufacturerUrlアプリケーションまたはコンポーネントのメーカーのURL
ModuleSignatureモジュールに一意の識別子
PackageCodeパッケージに一意の識別子
ProductNameアプリケーションまたはコンポーネントのパブリック名
RemovePreviousVersionsインストール時に以前のバージョンのアプリケーションを削除するかどうか
RestartWWWServiceインストール中にインターネット インフォメーション サービスを停止して再起動するかどうかを指定
SearchPath開発用コンピュータ上のアセンブリ、ファイルを検索するためのパス
Subjectアプリケーションまたはコンポーネントの追加情報
SupportPhoneサポート電話番号
SupportUrlサポートURL
Titleインストーラのタイトル
UpgradeCodeアプリケーションの複数のバージョンを表す共有識別子を指定します。
Versionインストーラ、マージ モジュール、または CAB ファイルのバージョン番号
WebDependenciesCab プロジェクトの依存関係

5.スタートメニューへのショートカットの作成

これだけでは、アプリケーションフォルダー C:\Program Files\UchukamenSoftware\Deployment に、
プライマリー出力の Deployment.exe だけがコピーされるだけで、スタートメニューに何も現れません。
そこで、Deploymentのプライマリー出力のショートカットをつくり、ユーザのプログラムメニューへショートカットを移動します。
ショートカットは、Deploymentのプライマリー出力を選択して、コンテキストメニュー→ショートカットの作成で作ります。
そのショートカットを、プログラムメニューへ移動すればOKです。

ポイント: ショートカットにアイコンを設定する。
このショートカットにアイコンを設定する必要があります。(無くてもOKだけど、カッコが悪い)
そこで、アプリケーションフォルダーに、App.ico を配置して、ショートカットのアイコンは App.ico を参照するようにします。
アプリケーションフォルダーに、App.ico を追加するには、アプリケーションフォルダーのコンテキストメニューから
追加→ファイルで、App.ico を指定すれば追加できます。
先ほど作った Deployment のショートカットのプロパティの Icon プロパティで、アプリケーションフォルダーの
App.ico を指定すればOKです。(下図)

ポイント: ショートカットに WorkingFolder をセットする。
WorkingFolder を正しくセットしておかないと、実行時の作業フォルダーが正しくセットされません。
カレントディレクトリからの相対パスを指定しているようなアプリケーションでは、この WorkingFolder を正しくセットしましょう。

Image

これで、次のようにスタートメニューに、Deployment アイコンが表示されるようになります。

Image



ポイント: プログラムの追加と削除にアイコンを表示する。
AddRemoveProgramIcon にアイコンをセットすると、次の図のようにプログラムの追加と削除にアイコン(16x16)を
表示することができます。

Image

また、このプログラムの追加と削除ダイアログで、『サポート情報を参照するには、ここをクリックしてください。』を
押すと、次のようにサポート情報ダイアログが表示されます。これらの情報を正しくセットするには、
セットアッププロジェクトのプロパティを正しくセットしておく必要があります。

Image
さて、これで準備完了です。
ソリューションエクスプローラから、DeploySetup を右クリックして、ビルドしてみましょう。

6.インストールのテスト

ソリューションエクスプローラから、DeploySetup を右クリックして、インストールメニューを選択してください。
Visual Studio からインストールのテストができるので、らくちんですね。

実際には、次のようにインストールが進みます。
Step 1
Image

Step 2
Image

Step 3
Image

Step 4
Image

Step 5
Image

このように動作すればOKです。

7.リリース版の作成

ここまでは、デフォルトで進んできたとすると、Debug 版になっているはずです。
実際の製品では、リリース版にする必要があります。
下図のように、Debug から、Release に変えて、再ビルドすれば、完了です。

注意: アセンブリー情報を正しくセットしておきましょう。
プロジェクトで、AssemblyInfo.cs というファイルがありますが、その中でバージョン情報などをアセンブリーに
埋め込むことができます。正しい情報をセットしておきましょう。

ここでは共有アセンブリーを使用せず、フォルダー内で完結する方法をとりますので、Strong Name でサインする必要は
ありません。共有アセンブリーを使用する場合には、Strong Name をセットする必要があります。
この方法については、MSのヘルプを参照してください。


Image

これで、DeploymentSetup\Release の下に、DeploymentSetup.msi というファイルができます。(下図)
Image

この DeploymentSetup.msi ファイル1つだけを配布すれば、OKです。