6

ac# Outlook アドイン (Office 2010/2013) およびその他のスタンドアロン ツール用に Visual Studio 2010 のセットアップ プロジェクトを使用しています。インストール中に Outlook のすべてのインスタンスを強制終了しました。その後、Outlook のインスタンスを再起動します。

私のアドイン プロジェクトでは、インストーラー クラスを追加し、実行する場所に InstallEventHandler(AfterInstallEventHandler) を追加しました。

Process.Start("Outlook");

同じコマンドを実行すると、Outlook が別のコンパイル済みクラスで開かれるだけですが、インストーラーのコンテキストでは、プロファイル作成アシスタントで Outlook が開きます。

また、コミット後にユーザー定義アクションとして上記のコンパイル済みexeを実行しようとしましたが、同じ問題が発生します。

解決策や説明をいただければ幸いです。

4

2 に答える 2

5

解決:

インストールは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を開くことで、これらの変更を行うことができます(ビルドごとに繰り返す必要があるため、スクリプトによる変更をお勧めします)。

于 2013-02-11T14:22:42.953 に答える
2

以前の回答に加えて(これを理解するのに多くの時間を費やしました):

私にとっての WiRunSql.vbs のテキスト: (あなたにとっては、argument2-update スクリプト引数も含まれます)

(私にとって PostBuildevent は

@echo off
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOuputPath)"

)

Dim filename, installer, database
filename = WScript.Arguments(0)
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase(filename, 1)
sql = "UPDATE `CustomAction` SET `Type`= 1554 WHERE `Type`= 3602"
Set view = database.OpenView(sql)
view.Execute
view.Close
database.Commit

次の前に、コマンド プロンプトでスクリプトをテストできます。

cscript "C:\Projects\YourProject\WiRunSql.vbs" "C:\Projects\YourProject\Debug\Setup.msi"

スクリプトのルックエラーのこの必要性

新しい Type 値を確認するには、 orca https://support.microsoft.com/en-us/kb/255905を使用できます

また見てください: http://www.codeproject.com/Articles/383481/Editing-an-MSI-Database http://integr8consulting.blogspot.ru/2012/04/microsoft-installer-custom-actions-user.html https ://github.com/facebookarchive/ie-toolbar/blob/master/Common/Install/msi/FBIE-MSI/scripts/msipostbuild.vbs

于 2015-10-22T13:29:41.200 に答える