为VSTO Outlook加载项创建(ClickOnce)设置

时间:2009-03-17 13:12:34

标签: clickonce ms-office vsto add-in registry

所以我创建了一个Outlook加载项,并使用click-once设置来部署它。

当用户是管理员时,安装程​​序运行正常,否则:不执行。

使用“run as ...”运行安装程序并以admin身份登录,但是加载项安装在admin下,而不是当前用户。插件中没有显示插件。

我尝试按照本指南操作: http://blogs.msdn.com/mshneer/archive/2008/04/24/deploying-your-vsto-add-in-to-all-users-part-iii.aspx

但是我被困在第一部分: http://blogs.msdn.com/mshneer/archive/2007/09/04/deploying-your-vsto-add-in-to-all-users-part-i.aspx

我按照示例操作并按照描述启动excel:

  

现在启动Excel应用程序。检查   HKCU hive中的注册表键,例如   你会发现两个有趣的   注册表项出现在您的   HKCU蜂巢:

     
      
  • HKCU \软件\微软\办公室\密押   包含注册表值的注册表项   TestValue
  •   
  • 你现在也有   HKCU \软件\微软\办公室\ 12.0 \用户   Settings \ TestPropagation注册表项   将Count值设置为1
  •   

但在我的机器上,没有创建密钥......我接下来可以尝试什么?

6 个答案:

答案 0 :(得分:0)

我在几年内没有这样做过,但是从内存办公室添加内容会像这样“注册”:

  1. 将文件放在正确的位置
  2. 注册代表你的插件的.NET COM对象
  3. 将注册表项放在Microsoft\Office\Addins下,告诉办公室加载您的COM对象。
  4. 如果我的想法是正确的,问题是你需要注册COM对象。注册COM对象是每台机器的操作,因此需要管理员权限。

    你将能够看到这确实是发生了什么。办公室附加组件下的注册表项将被称为MyAddin.Connect。然后,您可以在HKEY_CLASSES_ROOT下搜索MyAddin.Connect,当您以管理员身份运行安装时,它应该存在,而当按用户运行时,

    如果是这样,你可以通过对COM对象进行每用户注册来解决它,但这有点痛苦。

    现在可能更容易了,但是当我不得不这样做时,你使用一个名为RegCap.exe的实用程序将与COM对象关联的注册表项捕获到.reg文件中,然后修改.reg文件使用文本编辑器将HKLM替换为HKCU,然后加载此.reg文件而不是注册COM对象。

答案 1 :(得分:0)

为了清楚起见,您要将注册表项添加到“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ 12.0 \ User Settings”

他们仍然没有出现在HKCU \ Software \ Microsoft \ Office \?

我假设您必须运行64位操作系统?

如果是这样,修复很简单,请尝试使用

Windows注册表编辑器版本5.00 [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Wow6432Node \ Microsoft \ Office \ 12.0 \ User Settings \ TestPropagation]“Count”= dword:00000001 [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Wow6432Node \ Microsoft \ Office \ 12.0 \ User Settings \ TestPropagation \ Create \ Software \ Microsoft \ Office \ TestKey] “测试值”= “测试”

请注意,密钥的路径位于Wow6432Node密钥下。它必须在那里,否则它将无法在64位操作系统上运行。

答案 2 :(得分:0)

如果我正确理解了这个问题,请让我描述您的场景:将为所有用户安装clickonce应用程序,因此必须首先运行具有管理员权限的部署机制,以便将密钥写入HKLM。在此之后,标准用户登录,Microsoft Office在启动时将HKLM密钥复制到HKCU,然后加载项在标准用户的上下文中为该计算机上的任何用户运行。

如果在用户启动Office时让Office使用HKLM密钥复制到HKCU,所有尝试都已用尽,我会将vbs脚本和reg文件放在一起,将vbs脚本放在所有用户启动文件中(使用一些管理级别部署工具)并在没有Office帮助的情况下自行管理HKCU中特殊密钥的创建。当用户登录时,vbs脚本文件将以静默方式运行regedit以将相应的密钥放在HKCU中。

这与我们在办公室管理WordPerfect的方式类似。

更新:使用修补程序KB976477解决问题。

答案 3 :(得分:0)

如果要将Outlook加载项安装到所有用户,则需要使用共享加载项而不是VSTO加载项。 VSTO加载项是基于每个用户而不是每台计算机,因此对于标准用户,您必须暂时授予用户本地管理员授权才能安装它。

答案 4 :(得分:0)

您使用加载项定位了哪个版本的Office,以及您定位的.NET Framework版本是什么?另外,您使用的是哪个版本的Visual Studio?

这应该有用;我现在在生产中有两个Office插件,它们与ClickOnce一起部署。

您列出的文章是关于为所有用户安装的。这不使用ClickOnce,与您的案例无关。

在找到您正在使用/定位的版本后,我可以为您提供一些部署步骤。 : - )

答案 5 :(得分:0)

  1. 创建一个本地管理员帐户,说TESTAccount。
  2. 为该用户点击一次安装插件。
  3. 以管理员身份重新登录,并将TESTAccount复制到默认用户。
  4. 现在,当任何人登录到机器时,将从默认配置文件为他们创建一个新配置文件,因此将安装插件。