解決:
インストールはSYSTEMアカウントで実行されます。そのため、作成されたプロセスは、現在ログインしているユーザーとしてではなく、上記のアカウントでも実行されます。
追加のプロジェクト(InstallHelper)を作成しました。これには、
Process.Start("Outlook");
セットアッププロジェクトでコミット時にCustomActionとしてInstallHelperを追加し、CustomActionのプロパティでInstallerClassをFalseに変更しました。次に、WiRunSql.vbsをプロジェクトフォルダーにコピーし、PostBuildEventをセットアッププロジェクトに追加しました。
@echo off
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOutputPath)" "UPDATE CustomAction SET Type=1554 WHERE Type=3602"
3602:
- 0x800(msidbCustomActionTypeNoImpersonate)
- 0x400(msidbCustomActionTypeInScript)
- 0x200(msidbCustomActionTypeCommit)
- 0x12(カスタムアクションタイプ18:exe)
1554:
- 0x400(msidbCustomActionTypeInScript)
- 0x200(msidbCustomActionTypeCommit)
- 0x12(カスタムアクションタイプ18:exe)
参照:
msdn:カスタムアクションのスクリプト内実行オプション
タイプの変更により、msidbCustomActionTypeNoImpersonate(0x00000800)のビットが削除されたため、InstallHelperと作成されたプロセスは、SYSTEMではなく、ログインしたユーザーとして実行されます。
または、orcaでmsiを開くことで、これらの変更を行うことができます(ビルドごとに繰り返す必要があるため、スクリプトによる変更をお勧めします)。