2013-12-03 64 views
4

我无法理解如何彻底删除旧版文件,该文件曾经是我的Inno安装程序的一部分,但不再是。当我更新到新版本的产品时,我非常希望它不在目标文件夹中。Inno安装作废文件删除

我试着在[Run]部分删除它。这有效,但是当我卸载时,我收到一个对话框,提示“某些元素无法删除,可以手动删除这些元素”。

很高兴在安装新版本之前不必完全卸载旧版本。我只想让新的安装程序在运行时删除一个过时的文件。

有没有将文件标记为过时的方法?我看了Inno的文档,但找不到任何东西。

任何帮助将不胜感激......谢谢。

+3

正确的方法是使用['[InstallDelete]'](http://jrsoftware.org/ishelp/topic_installdeletesection.htm)部分,但它会显示文件无法关闭的页面,如果文件正在使用,似乎你不想... – TLama

+0

给了一个去,我得到了同样的结果:卸载产品后,我得到了“一些元素无法删除...”的消息。看起来像这样做的唯一方法是在安装更新之前卸载整个事情。 – user3011976

+0

通过调用带有明确指定的MOVEFILE_DELAY_UNTIL_REBOOT标志的'MoveFileEx',仍然存在后门程序。这可能会在下次重启时注册该删除,而不需要告知用户。 – TLama

回答

1

事实证明,如果您在更新过程中删除曾经是安装过程的一部分的文件,Inno将在卸载产品时显示错误消息。因此,处理这个问题的唯一方法就是完全卸载以前的版本,作为更新到新版本的一部分。

+0

好吧,你迫使我尝试,我不同意。如果您删除了作为安装一部分的文件(从某种意义上说它是一个'[Files]'部分条目),则卸载程序不在乎它是否被删除。 (Inno Setup 5.5.4) – TLama

+0

哇!很高兴你做到了。我正在使用Inno Setup 5.5.3。我将升级到5.5.4并回报。 – user3011976

+0

Inno不会警告卸载前或通过“[InstallDelete]”删除的文件。但它会警告如果文件/文件夹确实存在,并且它不能被删除,将其留下。 (我知道删除答案中的对话,但这个事实仍然存在) – Deanna