Fre*_*ein 5 c# setup-project visual-studio-2010 outlook-2013
我在visual studio 2010中使用了一个安装项目,用于ac#outlook插件(Office 2010/2013)和另一个独立工具.在安装过程中,我终止了所有outlook实例,之后我想重新启动一个outlook实例.
在我的addin项目中,我添加了一个installerclass并添加了一个InstallEventHandler(AfterInstallEventHandler),我在其中执行
Process.Start("Outlook");
Run Code Online (Sandbox Code Playgroud)
虽然相同的命令只是在其他编译的类中打开Outlook,但在安装程序Outlook的上下文中将在概要文件创建助手中打开.
我还尝试在提交后将所述工作编译的exe作为用户定义的操作运行,但同样的问题也会发生.
任何解决方案或解释将不胜感激.
解:
安装以SYSTEM帐户运行。因此,创建的过程也以所述帐户而不是当前登录用户的身份运行。
我创建了一个附加项目(InstallHelper),其中包括
Process.Start("Outlook");
Run Code Online (Sandbox Code Playgroud)
我在安装项目中将InstallHelper添加为Commit上的CustomAction,并在CustomAction的属性中将InstallerClass更改为False。然后,我将WiRunSql.vbs复制到项目文件夹,并将PostBuildEvent添加到安装项目:
@echo off
cscript //nologo "$(ProjectDir)WiRunSql.vbs" "$(BuiltOutputPath)" "UPDATE CustomAction SET Type=1554 WHERE Type=3602"
Run Code Online (Sandbox Code Playgroud)
3602:
1554年:
请参阅: msdn:自定义操作脚本内执行选项
类型更改删除了msidbCustomActionTypeNoImpersonate(0x00000800)的位,因此InstallHelper和创建的进程以登录用户身份而非系统身份运行。
另外,可以通过在orca中打开msi来进行这些更改(每次构建后都必须重复,所以我更喜欢脚本化的更改)。