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

时间:2013-02-08 13:03:58

标签: c# visual-studio-2010 setup-project outlook-2013

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

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

Process.Start("Outlook");

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

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

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

2 个答案:

答案 0 :(得分:5)

<强> SOLUTION:

安装在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: Custom Action In-Script Execution Options

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

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

答案 1 :(得分: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

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

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