如何使用WIX删除卸载msi上的注册表项

问题描述:

我需要在用户卸载应用程序时删除注册表项。如何使用WIX删除卸载msi上的注册表项

这些注册表项位于HKEY_CURRENT_USER \ SOFTWARE中。

我正在使用WIX工具。

请注意,密钥没有在安装时注册,而是在基于用户执行的操作进行登录后注册。

在此先感谢

+0

你检查了文件? http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_uninstall_shortcut.html –

+0

@SimonPrice:检查无效。你有任何代码而不是给出模糊的建议吗? – vishal

+0

我做的只是在家里的一台机器上,我会稍后再看看 –

Windows Installer只能访问它运行的用户的注册表配置单元。在技​​术上可以编写一个自定义操作来枚举用户配置文件列表并加载每个ntuser.dat,但这最终会导致各种问题。简短的答案是不实际的。此外,微软标准规定在卸载时留下用户数据。

如果你真的想这样做,我知道的最好的方法是使用自定义操作在卸载过程中写入注册表(MSI不支持的东西)。让此注册表值设置一个ActiveSetup命令来调用reg.exe删除。然后,当每个用户下次登录时,密钥将被删除。

+0

完全同意 - 加载每个用户配置单元是疯狂的,但我已经看到它完成。 HKCU是用户数据,不用理会。你可以为用户提供一个清理脚本,如果他们躁狂的话,但我只是将其作为知识库文章。最后一种方法是使用ActiveSetup“为每个用户运行一次”,这将清理HKCU,但是一旦忘记了它并安装新版本的软件,然后用户登录并拥有HKCU意外清理。如果您使用ActiveSetup,则必须在执行新安装时取消注册任何已注册的清理。 –