こんばんは。水戸スヤです。
今日はセットアップ プロジェクトの簡易条件分岐について。
※複雑な分岐を行いたい場合はおすすめしません。
複雑な処理をしたいなら、WIX Toolset等、他の仕組みを検討したほうが良いでしょう。
今回は、
「インストーラでの選択値に応じて、インストールするファイルを分ける」
というケースで実施したいと思います。
早速見ていきましょう。
下記のように中身の異なる2つのファイルを用意します。
sample.txt.1
1つ目のファイルです。
sample.txt.2
2つ目のファイルです。
このファイルをプロジェクトのルートフォルダに置いておきます。
次にインストーラで表示するUIを作成します。
ソリューションエクスプローラーで、セットアップ プロジェクトを右クリック
↓
View
↓
ユーザー インターフェース
を選択します。
すると下記のようなUser Interface画面が表示されます。
そしてInstall ⇒ Startを右クリック ⇒ ダイアログの追加
を選択します。
今回は簡易なので、
下記のとおりシンプルな「オプション ボタン(2ボタン)」を選択します。
オプション ボタン(2ボタン)が追加されます。
順序は「インストールの確認」の上が良いので
右クリック ⇒ 「上へ移動」を選択します。
そしてオプション ボタン(2ボタン)の設定を行います。
「オプション ボタン(2ボタン)」を右クリック ⇒ プロパティ ウィンドウ
をクリックすると下記のプロパティ欄が表示されます。
今回は必須の箇所だけ変更します。
項目名 | 値 |
---|---|
ButtonProperty | KIND |
UIの設定は以上です。
最後に、UIの選択値とインストールするファイルを紐付けます。
ソリューションエクスプローラーで、セットアップ プロジェクトを右クリック
↓
View
↓
ファイル システム
を選択します。
ここでは「Application Folder」に、プロジェクト出力が設定されているという前提で進めます。
下記の状態ですね。
この状態で右ペインで右クリック ⇒ Add ⇒ファイルを選択します。
プロジェクトのルートフォルダに配置した下記ファイルを選択しましょう。
あとはそれぞれのファイルのプロパティに、下記の値を設定します。
項目 | sample.txt.1 | sample.txt.2 |
---|---|---|
Condition | KIND=1 | KIND=2 |
TargetName | sample.txt | sample.txt |
TargetNameは同じ名前であることに注意してください。
これで設定は完了です。
同梱するプロジェクトは下記の通り、
Formが1つだけで、
Form_Loadで”sample.txt”から、文字を読み込んで表示するだけのシンプルなものです。
using System;
using System.IO;
using System.Windows.Forms;
namespace SetupProjectSample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string readText = string.Empty;
string exeDir = Path.GetDirectoryName(Application.ExecutablePath);
using (StreamReader sr = new StreamReader(Path.Combine(exeDir, "sample.txt")))
{
readText = sr.ReadToEnd();
}
MessageBox.Show(readText);
}
}
}
それでは、いざビルドしてみましょう。
setupができたと思います。
さっそく実行。
きましたきました。
進めていくと。。。
お、おお。味気ない。笑
デフォルトでない「Button2」を選択して進み、インストールします。
早速実行してみると。。。
ちゃんと2つ目のファイルを読み込んでいました。
めでたしめでたし。