带有COM DLL部署问题的Outlook 2003加载项安装项目

时间:2010-04-07 08:30:32

标签: outlook installation vsto add-in outlook-redemption

我开发了一个使用com dll兑换的Outlook 2003加载项。我创建了一个visual studio 2008安装项目,添加了一个自定义操作来运行“caspol.exe -machine -addgroup 1 -strong -hex [key] -noname -noversion FullTrust -n \”Name \“-description \”desc \“并按照http://msdn.microsoft.com/en-us/library/cc136646.aspx#AutoDeployVSTOse_InstallingtheAddinforAllUsers中的说明将软件下的注册表项移至HKLM,以确保所有用户的兼容性。

我在vsdrfCOMSelfReg的设置中包含了redemption.dll(vsdrfCOM抛出了一个错误)。

我的问题是:在管理员帐户下的测试计算机上安装设置时,它在所有用户下运行正常,但是当我们使用在系统帐户下运行的公司范围的软件部署时,安装程​​序会执行但是加载项不会加载。如果我再次使用管理员帐户修复安装,则加载就好了。系统帐户是否应该具有安装所有组件所需的权限?我有什么选择? 感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

在系统帐户下运行安装后,您是否在HKCR中看到了Redemption注册表项?例如。 HKEY_CLASSES_ROOT \ Redemption.RDOSession?

答案 1 :(得分:0)

经过一些无尽的夜晚,我终于找到了问题所在。它真的是关于代码访问安全性和caspol.exe 部署Outlook 2003加载项的一些提示(Outlook 2007不同)。 首先,在测试客户端上,确保将Windows环境变量VSTO_LOGALERTS设置为1,因为这会将加载项的所有错误写入位于目标安装目录中的日志文件中。同样非常重要的是,如果您的加载项在启动期间抛出异常,则在下次启动Outlook时将在注册表中禁用它(请参阅此处What can cause Outlook to change a COM-addin's LoadBehavior to 2 - other than unhandled exceptions?)。如果您不了解它,可能会引起一些混淆。

现在让我们继续讨论caspol问题。请务必先使用强名称密钥对程序集进行签名。接下来,您需要确保您的程序集在客户端上获得完全信任。为此,您可以使用以下设置运行caspol.exe:“caspol.exe -machine -addgroup 1 -strong -hex [key] -noname -noversion FullTrust -n \”Name \“-description \”desc \“使用这些参数,您将使用您的密钥签署所有已使用密钥签名的程序集,完全信任计算机。这比给出整个目录FullTrust更好。

在生产环境中,您肯定希望为加载项创建设置。您还可以为安装项目创建自定义操作,以自动执行所有caspol内容。您可以使用此处提供的示例代码“http://msdn.microsoft.com/en-us/library/cc136646.aspx#AutoDeployVSTOse_CreatingtheCASPolicy”,但请注意:在caspol参数中检查-pp off。如果启用了策略更改提示,那么您的自动安装将失败,因为它需要用户交互。将-pp设置为off,执行策略并重新设置。再次注意:示例代码不会等待退出流程。

在我解决了这一切之后,即使对于“所有用户”安装,外接程序的部署也很容易。希望能帮助那里的任何人。