【问题标题】:Creating a (ClickOnce) setup for VSTO Outlook Add-in为 VSTO Outlook 加载项创建 (ClickOnce) 设置
【发布时间】:2009-03-17 13:12:33
【问题描述】:

所以我创建了一个 Outlook 插件并使用单击一次设置来部署它。

当用户是管理员时,设置运行良好,否则:不行。

使用“运行身份...”运行设置并以管理员身份登录可以工作,但插件安装在管理员下,而不是当前用户下。该插件未显示在 Outlook 中。

我尝试按照本指南进行操作: 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 配置单元中的注册表项,例如 你会发现两个有趣的 出现在您的下方的注册表项 HKCU蜂巢:

  • HKCU\Software\Microsoft\Office\TestKey 包含注册表值的注册表项 测试值
  • 您现在还拥有 HKCU\Software\Microsoft\Office\12.0\User Settings\TestPropagation 注册表项 计数值设置为 1

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

【问题讨论】:

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


    【解决方案1】:

    我已经有几年没有这样做了,但是从内存中,Office 插件会像这样“注册”:

    1. 将文件放在正确的位置
    2. 注册代表您的插件的 .NET COM 对象
    3. 将注册表项放在Microsoft\Office\Addins 下,告诉office 加载您的COM 对象。

    如果我的想法是正确的,那么问题将是您需要注册 COM 对象。注册 COM 对象是每台机器的操作,因此需要管理员权限。

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

    如果是这样,您可以通过对 COM 对象进行按用户注册来绕过它,但这有点痛苦。

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

    【讨论】:

    • 这不再适用。他们在 .NET 3.5 中添加了 Office 加载项的 ClickOnce 部署,安装它们要容易得多。您无需进行 COM 注册。
    【解决方案2】:

    为了清楚起见,您将注册表项添加到“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] "TestValue"="测试"

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

    【讨论】:

    • 嗯,我正在使用 Vista Business 32 位。事实上,当我开始办公时,密钥不会出现在 HKCU\Software\Microsoft\Office\ 中。虽然文章说他们应该。还有其他建议吗?
    • 如何将密钥添加到注册表中?如果您具有用户帐户控制权并且您是从非提升进程安装的,则它可能正在虚拟化密钥。检查密钥是否在:HKEY_USERS\_Classes\VirtualStore\Machine\Software\Microsoft\Office\12.0\User Settings
    • 您无法在 CLickOnce 部署中写入 HKLM。 IT 没有权限。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您使用该加载项的目标是什么版本的 Office,以及您的目标是什么版本的 .NET Framework?另外,您使用的是什么版本的 Visual Studio?

      这应该有效;我现在有两个使用 ClickOnce 部署的 Office 加载项在生产中。

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

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

      【讨论】:

        【解决方案5】:

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

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

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

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

        【讨论】:

        • 由于我们想创建一个可以提供给客户的安装程序,vbs 解决方案看起来不太合适
        • 对不起,这完全是倒退。 ClickOnce 应用程序仅按用户安装。
        • RobinDotNet - 第一段是我试图解释问题及其意图(而不是我的答案的一部分)。是的,谢谢,我了解 ClickOnce 和按用户安装。
        • 好的,正在检查。很多人出于某种原因不明白这一点。
        【解决方案6】:
        1. 创建一个本地管理员帐户,例如 TESTAccount。
        2. 使用单击一次为该用户安装插件。
        3. 以管理员身份重新登录并将 TESTAccount 复制到默认用户。

        现在,当任何人登录机器时,将从默认配置文件为他们创建一个新配置文件,因此将安装插件。

        【讨论】:

          猜你喜欢
          • 2011-10-29
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2021-06-29
          • 1970-01-01
          • 1970-01-01
          • 2017-11-04
          • 1970-01-01
          相关资源
          最近更新 更多