使用COM DLL部署的Outlook 2003加载项安装项目问题

问题描述:

我开发了一个使用com dll兑换的Outlook 2003加载项。我创建了一个visual studio 2008安装项目,添加了一个自定义操作来运行“caspol.exe -machine -addgroup 1 -strong -hex [key] -noname -noversion FullTrust -n \”Name \“-description \”desc \“和感动下软件的注册表键HKLM在http://msdn.microsoft.com/en-us/library/cc136646.aspx#AutoDeployVSTOse_InstallingtheAddinforAllUsers描述,以确保所有用户的兼容性使用COM DLL部署的Outlook 2003加载项安装项目问题

我包括在vsdrfCOMSelfReg设置的redemption.dll(vsdrfCOM扔一个错误)

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

经过无休止的夜晚,我终于找出问题所在。它确实是关于代码访问安全性和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.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 。如果策略更改提示符处于打开状态,则自动安装将失败,因为它需要用户进行交互。set -pp off,执行策略并重新设置。再次注意:示例代码的确如此不等待过程退出。

我明白了所有这些之后,即使对于“所有用户”安装,加载项的部署也很容易。希望能帮助任何人。

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

+0

是的,那些钥匙在那里。 – hoetz 2010-04-08 07:29:25

+0

我想我找到了。似乎一直是卡斯波尔的命令。使用干净的机器,我部署了加载项,并且因为它没有工作,我再次手动执行了caspol命令。然后,我以普通用户身份登录,并立即开始工作。我会验证这一点,并在稍后发布结束答案。 – hoetz 2010-04-08 09:21:39