无法打开键:HKEY_CURRENT_USER\Software\Classes\MyAppAssembly
我使用 WIX 3.5 为我的应用程序创建了设置。安装程序第一次工作正常。但卸载应用程序然后在同一台计算机上再次重新安装后,我收到以下错误消息:
“无法打开密钥:HKEY_CURRENT_USER\Software\Classes\XMyapp...\myapp。请验证您是否有足够的权限访问该密钥或联系您的支持人员人员。”
在安装过程中,我的 MSI 应该安装这个程序集。卸载后,我看到这些注册表项已被删除...这与首次安装时的情况相同。
我很困惑为什么安装程序试图打开这个注册表项?
我使用 WIX 3.5 for 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>
谢谢!
I created setup for my applicaiton using WIX 3.5. Installer works fine for first time. But after uninstalling application and then reinstalling again on same machine, I get following error message:
"Could not ope key: HKEY_CURRENT_USER\Software\Classes\XMyapp...\myapp. Verify that you have sufficeint access to that key or contact your support personnel."
During installation my msi is supposed to install this assembly. After uninstall i see that these registry enntries are removed...which is same as what it should be during first time install.
I am confused as why the installer is trying to open this registry entry??
I created 2 more installers using WIX 3.5 for Windows 7 and Windows Server 2008 but never found this problem. This is only with Windows XP SP3 box.
Please suggest any solution to this problem.
Following is partial code from my .wxs file generated by Heat.exe. I am getting error for TimeLimitPlugin class below
<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>
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能有一个每用户包(Package/@InstallScope="perUser" 而不是 Package/@InstallScope="perMachine")。安装时,
Class
元素会写入 HKCU CLSID 注册位置。我怀疑是上面的代码片段导致了问题,而是您的软件包中的其他一些注册。You probably have a per-user package (Package/@InstallScope="perUser" instead of Package/@InstallScope="perMachine"). When you install the
Class
element is writing to the HKCU CLSID registration location. I doubt it is the exact snippet above causing the issue but some other registration in your package.