SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

.NETの高度な配置機能を活用する

エンドユーザーに応じてインターフェイスがカスタマイズされるアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

カスタム動作

 カスタム動作は、セットアッププロセスで実行されるインストールコンポーネントです。カスタム動作エディタを表示するには、図12に示すように、セットアッププロジェクトを右クリックし、[View]、[Custom Actions]の順にクリックします。図12からわかるように、カスタム動作は、インストール(Install)、確定(Commit)、ロールバック(Rollback)、アンインストール(Uninstall)の4つのいずれの時点でも実行できます。本稿の目的を達成するためには、インストールの段階でいくつかのファイルとフォルダをセットアップする必要があります。指定のフォルダがすでに存在する場合、フォルダの再作成は行いませんが、ファイルは再作成します。

図12 カスタム動作エディタ
図12 カスタム動作エディタ

 カスタム動作プログラムの作成は正攻法で行います。ここでは新たなクラスライブラリプロジェクトとして、インストール中にターゲットコンピュータ上のファイルやフォルダを操作するためのSetupCustomActionクラスを作成します。そのためには、[New Project Wizard]を使ってプロジェクトを作成し、テンプレートとして[Class Library]を指定します。デフォルトでは、プロジェクトにClass1というクラスが作成されます。プロジェクトからこのクラスを削除し、図13に示すように、[Add New Item]ウィザードを使ってプロジェクトにインストーラクラス(Installer Class)を追加します。

図13 カスタム動作プロジェクトへのインストーラクラスの追加
図13 カスタム動作プロジェクトへのインストーラクラスの追加

 これでコードを書く準備ができました。実際のコードを図14に示します。

図14 インストーラクラスのセットアップ
図14 インストーラクラスのセットアップ

 SetupCustomActionクラスはSystem.Configuration.Install.Installerを継承しており、RunInstaller属性がtrue[RunInstaller(true)]であることに注目してください。この属性がtrueでなければ、SetupCustomActionはセットアッププログラムによって実行されません。

 SetupCustomActionクラスにコードを追加するためにまず、Installメソッドをオーバーライドします。

public override void Install(IDictionary stateSaver)
{
    base.Install (stateSaver);

    string companyName = Context.Parameters["cName"];
    CreateFilesFolders(companyName);
}

 次に、設定ファイルを作成します。実装の詳細についてはコードを参照してください。

 この時点で、SetupCustomActionプロジェクトを右クリックし、[Build]をクリックすることでSetupCustomActionのコンパイルを行います。これで、コンパイルされたクラス(具体的には.dll)ファイルをセットアッププロジェクトに追加する準備ができました。この追加を行うには、セットアッププロジェクトを右クリックし、[Add]、[File]の順にクリックします。次に、[Add Files]ダイアログボックスから「SetupCustomAction.dll」を選択します(適当なフォルダを開く必要があるかもしれません)。セットアッププロジェクトの下に「SetupCustomAction.dll」が表示されます。

 セットアッププロジェクトにこのDLLファイルを追加したら、ソリューションエクスプローラのセットアッププロジェクトを右クリックし、ポップアップメニューの[View]、[Custom Actions]を順にクリックして、カスタム動作エディタを開きます。カスタム動作エディタの[Install]フォルダを右クリックし、ポップアップメニューの[Add Custom Action...]をクリックします。次に、[Select Item in Project]ダイアログボックスの[Applications Folder]をダブルクリックし、「SetupCustomAction.dll」を選択して、[OK]をクリックします。このときの様子を図15に示します。

図15 「Select Item in Project」ダイアログボックス中の「SetupCustomAction.dll」
図15 「Select Item in Project」ダイアログボックス中の「SetupCustomAction.dll」

 さらに、インストールプロセスで実行できるように、この「SetupCustomAction.dll」をセットアッププロジェクトに導入する必要があります。また、ユーザーの入力をコードから参照可能な変数にリンクさせる必要もあります。そのためには、図16に示すように、「SetupCustomAction.dll」のプロパティを設定します。

図16 カスタム動作における「SetupCustomAction.dll」のプロパティ
図16 カスタム動作における「SetupCustomAction.dll」のプロパティ

 このCustomActionDataプロパティによって、cNameという変数が「COMPANYNAME_A1」という入力フィールドに関連付けられます。この関連付けを行っておくと、入力された値を次のコードで取得できるようになります。

string companyName = Context.Parameters["cName"];
注意
 CustomActionDataプロパティは「/name=value」という形式をとります。値が複数ある場合は、間に空白1つ分の区切りを入れる必要があります(例:/name1=value1 /name2=value2)。また、値が空白を含む場合は、引用符で囲む必要があります。

 これでXMLファイルを生成するメソッドを書く準備が整いました。このXMLファイルにユーザーの情報を記録し、実行時にはこの情報を読み取ってインターフェイスをカスタマイズします。最後に、実際に配布するためのセットアッププログラムの再コンパイルを行います。

まとめ

 カスタムアプリケーションの作成は、ソフトウェア開発における長年の課題です。これまでは、エンドユーザーごとに別のライセンスファイルを提供するなど、いくつかの方法を使ってカスタマイズが行われてきました。今では、Visual Studio .NETを使用することで、インストーラ派生クラスによってカスタム動作を実現するデプロイメントプロジェクトを作成できます。VS .NETのカスタム配置の機能を使えば、配置プロセス中にユーザーからの入力情報を取得して簡単に設定ファイルを作成できます。実行時には、この設定ファイルから情報を読み取って、アプリケーションのインターフェイスを適切にカスタマイズできます。

参考資料

  1. VS .NET Setup and Deployment Projects, asptoday.com.
  2. Deploy Apps With Ease
  3. Deploying Serviced Components
  4. MSDN

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Anthony Arslan(Anthony Arslan)

現在、開発者としてネブラスカ州リンカンの大手金融機関に勤務するかたわら、地元の大学で「Microsoftアプリケーション」という授業を受け持っている。コンピュータ科学修士。連絡先はarslan@nefel.com

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/317 2006/02/16 13:10

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング