.net

【.net】セットアッププロジェクトで簡易条件分岐

こんばんは。水戸スヤです。

今日はセットアップ プロジェクトの簡易条件分岐について。
※複雑な分岐を行いたい場合はおすすめしません。
複雑な処理をしたいなら、WIX Toolset等、他の仕組みを検討したほうが良いでしょう。

今回は、
「インストーラでの選択値に応じて、インストールするファイルを分ける」
というケースで実施したいと思います。

早速見ていきましょう。


sample.txtを2つ用意する

下記のように中身の異なる2つのファイルを用意します。

sample.txt.1

1つ目のファイルです。

sample.txt.2

2つ目のファイルです。

このファイルをプロジェクトのルートフォルダに置いておきます。


インストーラで分岐するためのUIを作成

次にインストーラで表示するUIを作成します。
ソリューションエクスプローラーで、セットアップ プロジェクトを右クリック
↓
View
↓
ユーザー インターフェース
を選択します。

すると下記のようなUser Interface画面が表示されます。

ユーザーインターフェース画面

そしてInstall ⇒ Startを右クリック ⇒ ダイアログの追加
を選択します。

今回は簡易なので、
下記のとおりシンプルな「オプション ボタン(2ボタン)」を選択します。

ダイアログ選択画面

オプション ボタン(2ボタン)が追加されます。
順序は「インストールの確認」の上が良いので
右クリック ⇒ 「上へ移動」を選択します。

追加した画面の順序

そしてオプション ボタン(2ボタン)の設定を行います。
「オプション ボタン(2ボタン)」を右クリック ⇒ プロパティ ウィンドウ
をクリックすると下記のプロパティ欄が表示されます。

プロパティ欄

今回は必須の箇所だけ変更します。

項目名 値
ButtonProperty KIND

UIの設定は以上です。


UIの選択値と、インストールするsample.txtを紐付ける

最後に、UIの選択値とインストールするファイルを紐付けます。
ソリューションエクスプローラーで、セットアップ プロジェクトを右クリック
↓
View
↓
ファイル システム
を選択します。

ここでは「Application Folder」に、プロジェクト出力が設定されているという前提で進めます。
下記の状態ですね。

ApplicationFolder

この状態で右ペインで右クリック ⇒ Add ⇒ファイルを選択します。
プロジェクトのルートフォルダに配置した下記ファイルを選択しましょう。

  • sample.txt.1
  • sample.txt.2

2つのファイルを選択

あとはそれぞれのファイルのプロパティに、下記の値を設定します。

項目 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ができたと思います。

さっそく実行。

実行してみる

きましたきました。
進めていくと。。。

作ったUI

お、おお。味気ない。笑
デフォルトでない「Button2」を選択して進み、インストールします。
早速実行してみると。。。

無事に動いている模様

ちゃんと2つ目のファイルを読み込んでいました。

めでたしめでたし。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です