Installshield:卸载不起作用



我使用Installshield 2011创建了一个安装程序。我可以用它安装软件,也可以从"程序和功能"界面卸载。

但是,如果应用程序已经安装,并且我再次单击安装程序,它会显示屏幕,说明它将卸载并完成卸载。但卸载实际上并没有发生。

我有"删除"对话框的"全部删除"事件,在"删除"表中,我列出了安装模式2下需要卸载的所有文件。

不确定问题是什么…特别是因为我可以从"程序和功能"中正确卸载。

有什么建议/提示吗?

在试图对此进行过多理论化之前,制作一个适当的、详细的日志文件是很有用的。替换路径以满足您的要求:

msiexec.exe /x "C:Test.msi" /L*V! "C:msilog.log"

命令行参数说明:

/x = run uninstallation sequence
/L*V! "C:Tempmsilog.log"= verbose logging, flush directly to log file without buffer

您真的对删除对话框进行了任何修改吗?还是标准的?为什么要将这些文件添加到RemoveFile表中?或者这是自动发生的?通常不需要将文件添加到RemoveFile表中,除非这些文件是由应用程序生成的,并且您希望在卸载时将其删除(通常在用户配置文件中)。

话虽如此,我几天前刚刚回答了一个问题,这个问题与在静默模式和交互式模式下运行卸载的区别有关。请阅读以下答案(及其相关问题):从控制面板卸载与从.msi删除不同

更新:

  • 卸载MSI文件的不同方式的卸载参考从命令行卸载MSI文件而不使用msiexec

  • 如果您正在处理Installscript MSI文件,请尝试读取其setup.exe参数的引用

我脑海中浮现的几个调试建议:

  1. 尝试创建一个新的Basic MSI项目,并在Installshield中手动比较对话框中的详细信息。为新项目添加一些测试文件,并确保它以各种方式卸载(尤其是不适用于主安装程序的方式)。

  2. 如果看不到任何明显的东西,或者你想进行更有效的比较,请使用Wix的dark.exe文件将编译后的MSI反编译为Wix XML格式,用于原始项目和新项目。然后找到对话框的Wix XML并检查设置。

版本控制您的安装源代码当出现这样的问题时,您有更好的调试机会,包括只需恢复整个设置—几次修订,并重新执行旧源中缺少的内容。

如果你可以让新的设置工作,而旧的设置不配合,那么将所有组件从旧的设置迁移到新的设置就没有那么复杂了。我这样做是为了从Installscript MSI迁移到基本MSI,使用右键单击每个组件可以获得的"导出到项目"选项(我相信这就是选项所在的位置)。我只花了几个小时就完成了一个大的设置。然后,它再使用几个小时来验证所有自定义操作是否正确。

记录:将Wix与基于文本的源文件一起使用会使调试更加容易,强烈建议使用:Windows安装程序和Wix的创建。一旦你习惯了,你就可以用商业工具来匹配创建安装程序的速度。

Wix的详细信息,包括快速启动建议:MSI与nuget包:哪一个更适合连续交付?

有关安装程序的更多帮助,请查看:http://www.installsite.org/

最新更新