Visual Studio安装项目:将CustomActions / process作为当前用户而不是系统帐户运行

我在visual studio 2010中使用了一个安装项目,用于ac#outlook插件(Office 2010/2013)和另一个独立工具。 在安装过程中,我终止了所有outlook实例,之后我想重新启动一个outlook实例。

在我的addin项目中,我添加了一个installerclass并添加了一个InstallEventHandler(AfterInstallEventHandler),我在其中执行

Process.Start("Outlook"); 

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

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

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

解:

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

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

 Process.Start("Outlook"); 

我在我的安装项目中在Commit上添加了InstallHelper作为CustomAction,并在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:自定义操作脚本执行选项

Type-change删除了msidbCustomActionTypeNoImpersonate(0x00000800)的位,因此InstallHelper和创建的进程作为登录用户运行,而不是作为SYSTEM运行。

或者,可以通过在orca中打开msi来实现这些更改(必须在每次构建后重复,因此我更喜欢脚本化更改)。

除了之前的回答(我花了很多时间来理解这一点):

我的文本为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 

您可以在命令promt之前测试脚本:

 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