Inno setup 删除由于升级而不再需要的文件

Inno setup 删除由于升级而不再需要的文件,inno-setup,Inno Setup,在构建我的应用程序的新版本时,可能不再需要以前版本中需要的文件。我想在升级过程中清理这些。到目前为止,我的想法是: 我考虑过使用InstallDelete,但这需要当前版本知道上一个版本包含哪些文件。构建过程是自动化的,我希望构建不需要签入任何东西。(这使得标记等变得相当混乱。) 我还考虑过运行卸载,但这意味着升级无法完全回滚(因为应用程序将被卸载) 是否有一种方法可以检测旧安装中存在的文件而不是安装过程中的新文件,并让Inno以一种可以回滚的方式删除它们(或者只有安装成功时才会发生)?理想

在构建我的应用程序的新版本时,可能不再需要以前版本中需要的文件。我想在升级过程中清理这些。到目前为止,我的想法是:

  • 我考虑过使用
    InstallDelete
    ,但这需要当前版本知道上一个版本包含哪些文件。构建过程是自动化的,我希望构建不需要签入任何东西。(这使得标记等变得相当混乱。)
  • 我还考虑过运行卸载,但这意味着升级无法完全回滚(因为应用程序将被卸载)

是否有一种方法可以检测旧安装中存在的文件而不是安装过程中的新文件,并让Inno以一种可以回滚的方式删除它们(或者只有安装成功时才会发生)?

理想情况下,您应该阅读上次安装的卸载程序的文件列表,并将其与当前升级所安装的文件进行比较。这些文件列表的不同之处在于,您需要在某个地方进行备份(使用这些备份文件的列表),这样您就可以在卸载时恢复它们。但是,读取卸载程序数据文件将非常困难。。。你可以对照应用程序检查文件差异。目录内容,但它很弱。@TLama是的。如果我理解你在文件差异方面的建议,那将删除用户碰巧放在应用程序目录中的、不是安装程序中的任何文件。(在我的情况下不太可能,但我喜欢尽可能遵循最佳实践。)所以文件列表存储的唯一位置是在卸载程序中?是的。那是唯一的地方。但您当然可以开始制作另一个刚安装的文件列表。这将使您的任务相对简单。@TLama目前听起来像是,答案是,“Inno安装程序并不真正支持开箱即用。”啊,好吧。不可能什么都有。Inno安装程序仍然比WiX更具可用性。谢谢,可以这么说。最好为
[InstallDelete]
部分条目设置一个新标志
backup
,该标志将备份该条目的文件或文件夹(可能将所有文件打包到一个存档中),并将此操作记录到卸载程序以进行回滚。目前,没有这样的选择,但仍然有一种方法可以自己写类似的东西。