2008年6月17日火曜日

.NET セットアッププロジェクト インストール完了後にプログラムを実行するには

「チェックボックス」ダイアログを使用して、インストール終了後にプログラムを実行するかを選択し
チェックON時のみプログラムを実行する方法です。

まずユーザーインターフェースエディタで終了ノードに「チェックボックス(A)」ダイアログを追加します。



次にカスタムアクションとして実行するVBScript「CustomAction.vbs」を用意します。
Dim WshShell
Dim path, manufacturer, productName

if Session.Property("CHECKBOXA1") then
manufacturer = Session.Property("Manufacturer")
productName = Session.Property("ProductName")
path = """" & Session.Property("TARGETDIR") & "WindowsApplication1.exe " & """"  & " " & manufacturer & " " & productName 
set WshShell = CreateObject("WScript.Shell")
WshShell.Run path
end if

※パスの指定方法
 コマンドライン引数がない場合
 path = """" & Session.Property("TARGETDIR") & "WindowsApplication1.exe " & """"
 コマンドライン引数がある場合
 path = """" & Session.Property("TARGETDIR") & "WindowsApplication1.exe " & """" & " " & 引数1 & " " & 引数2


作成したカスタムアクション「CustomAction.vbs」ファイルをアプリケーションフォルダに配置します。


セットアッププロジェクトをビルドし、MSIファイルを作成します。

作成したMSIファイルをORCAで開きます。
「File]」テーブルの「FileName」フィールドが「CustomAction.vbs」のデータを探します。
該当データの「File」フィールド値をコピーします。
※「File」フィールド値が「_77760E20AE324214B847ADADACA85FA6」であるとします。


「CustomAction」テーブルに以下の行を追加します。
ActionTypeSourceTarget
AC122_77760E20AE324214B847ADADACA85FA6

ActionフィールドはCustomActionテーブル内で一意になるよう名前をつけます。
TypeフィールドはVBScriptファイルである定数値22を指定します。
その他の定数値はCustom Action Typesを参照してください。
Sourceフィールドは先程の「CustomAction.vbs」のFileフィールド値を指定します。


「ControlEvent」テーブルに以下の行を追加します。
Dialog_Control_EventArgumentConditionOrdering
FinishedFormCloseButtonDoActionAC111



以上でORCAでの編集は終了です。

作成したMSIファイルでインストールを実行し、チェックボックスダイアログでチェックONした時のみプログラムが実行される事を確認してください。

0 件のコメント: