无法打开密钥:HKEY_CURRENT_USER \ Software \ Classes \ MyAppAssembly

时间:2011-03-23 21:10:28

标签: windows-xp wix registry wix3.5

我使用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>

谢谢!

1 个答案:

答案 0 :(得分:0)

你可能有一个每用户包(Package / @ InstallScope =“perUser”而不是Package / @ InstallScope =“perMachine”)。安装Class元素时,正在写入HKCU CLSID注册位置。我怀疑它是上面引起问题的确切片段,但在你的包装中还有其他一些注册。