我有一个打包到 DotNetInstaller exe 文件中的 msi 安装程序。一切正常,但是当我尝试从“添加/删除”窗口卸载它时,它不会运行 .exe 文件,而是运行 .msi。我真的需要运行.exe,因为我将属性值作为uninstall_cmdparameters 传递。请帮忙。
提前致谢。
我有一个打包到 DotNetInstaller exe 文件中的 msi 安装程序。一切正常,但是当我尝试从“添加/删除”窗口卸载它时,它不会运行 .exe 文件,而是运行 .msi。我真的需要运行.exe,因为我将属性值作为uninstall_cmdparameters 传递。请帮忙。
提前致谢。
好的,在与这个胡说八道斗争了 4 天之后,我终于想出了一些东西。
我在安装完成之前运行 C# 自定义操作,然后更新 Uninstall[ProductCode] 中的注册表项:
string UNINSTALL_REGKEY = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"; string productCode = session["ProductCode"];
Registry.SetValue(UNINSTALL_REGKEY + productCode, "UninstallString", "MsiExec.exe /x" + productCode + "DELFILES=TRUE", RegistryValueKind.String);
Registry.SetValue(UNINSTALL_REGKEY + productCode, "WindowsInstaller", 0, RegistryValueKind.DWord);
(注意:WindowsInstaller 的值必须设置为 0 否则不会使用 UninstallString 的值)
现在,当我从添加/删除程序中删除我的产品时,卸载将使用我修改后的 UninstallString 运行。
希望它对其他有同样问题的人有所帮助。