.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つ目のファイルを読み込んでいました。

めでたしめでたし。

コメントを残す

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