【问题标题】:Could not open key: HKEY_CURRENT_USER\Software\Classes\MyAppAssembly无法打开密钥:HKEY_CURRENT_USER\Software\Classes\MyAppAssembly
【发布时间】:2011-03-23 21:10:28
【问题描述】:

我使用 WIX 3.5 为我的应用程序创建了设置。安装程序第一次工作正常。但是在卸载应用程序然后在同一台机器上重新安装后,我收到以下错误消息:

“无法打开密钥:HKEY_CURRENT_USER\Software\Classes\XMyapp...\myapp。验证您是否有足够的权限访问该密钥或联系您的支持人员。”

在安装过程中,我的 msi 应该安装这个程序集。卸载后,我看到这些注册表项已被删除......这与第一次安装时应该是相同的。

我很困惑为什么安装程序试图打开这个注册表项?

我使用 WIX 3.5 为 Windows 7 和 Windows Server 2008 创建了另外 2 个安装程序,但从未发现此问题。这仅适用于 Windows XP SP3 框。

请提出任何解决此问题的方法。

以下是 Heat.exe 生成的 .wxs 文件中的部分代码。我收到以下 TimeLimitPlugin 类的错误

<Directory Id="dirE6F61FBBE33D607D42934C479509E1A7" Name="bin">
   <Component Id="cmp8862A7C3908D1BE33925BE0E72222A47" Guid="{EC21FA8F-ADAE-4608-8CB0-49B9EE7F5A37}">
   <File Id="fil143DAAA17C8B9650C00B50AB55BE85D3" KeyPath="yes" Source="..\OneApp31_deploy\Debug\bin\AjaxControlToolkit.dll" />
  </Component>
  <Component Id="cmp120CF12CD801404A02CE3906AD63E471" Guid="{46428AEB-4AD5-4230-A0DD-284C35682C0C}">                     
    <Class Id="{0155BEAB-D46E-3EC9-9535-263A90812041}" Context="InprocServer32" Description="TimeLimitPlugin" ThreadingModel="both" ForeignServer="mscoree.dll">
        <ProgId Id="TimeLimitPlugin" Description="TimeLimitPlugin" />
      </Class>

谢谢!

【问题讨论】:

  • 什么版本的 WiX?卸载后是否提示您重新启动计算机?在尝试重新安装之前,您是否尝试过重启机器?

标签: windows-xp wix registry wix3.5


【解决方案1】:

您可能有一个每个用户的包(Package/@InstallScope="perUser" 而不是 Package/@InstallScope="perMachine")。当您安装 Class 元素时,它会写入 HKCU CLSID 注册位置。我怀疑是上面的确切 sn-p 导致了问题,但您的包中还有其他一些注册。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2014-06-16
    • 2022-10-22
    • 1970-01-01
    相关资源
    最近更新 更多