6

我在 Visual Studio 2010 中为 ac# Outlook 插件(Office 2010/2013)和其他独立工具使用设置项目。在安装过程中,我杀死了 Outlook 的所有实例,之后我想重新启动一个 Outlook 实例。

在我的插件项目中,我添加了一个安装程序类并添加了一个 InstallEventHandler(AfterInstallEventHandler) 我在其中执行

Process.Start("Outlook");

虽然相同的命令只是在其他编译类中打开 Outlook,但在安装程序的上下文中,Outlook 会在配置文件创建助手中打开。

我还尝试在提交后将所述工作编译的 exe 作为用户定义的操作运行,但会出现同样的问题。

任何解决方案或解释将不胜感激。

4

2 回答 2

5

解决方案:

安装在 SYSTEM 帐户中运行。因此,创建的进程也在所述帐户中运行,而不是以当前登录的用户身份运行。

我创建了一个额外的项目(InstallHelper),其中包括

Process.Start("Outlook");

我在我的安装项目中将 InstallHelper 添加为 CustomAction on Commit,并在 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"

这需要在脚本中查找错误

要查看新的类型值,您可以使用 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 回答