Inno Setup - 保留单个现有文件,但在目录树中安装所有其他文件

时间:2016-06-06 07:32:43

标签: inno-setup

我有一个beta测试阶段的应用程序。它有应用程序文件和数据库(.db)文件,我想保留而不是替换它。

让我们假设我为我的客户提供了1.0版本,并且他们安装了它。现在我有1.1版,它在应用程序文件中有一些变化,但不在db。

如何指示Inno安装程序保留该文件,其余文件只需替换?

[Files]
Source: "D:\nw\testfile.db"; DestDir: "{app}"; Flags: uninsneveruninstall   onlyifdoesntexist
Source: "D:\nw\*"; Excludes: "\node_modules\"; DestDir: "{app}"; Flags:  recursesubdirs createallsubdirs;

使用此脚本文件,testfile.db始终会被新版本覆盖。

我的目标是在新安装期间保留testfile.db

  

2016-06-06 13:36:21.630 - 文件输入 -
  2016-06-06 13:36:21.630 Dest filename:C:\ Complexity tool \ testfile.txt
  2016-06-06 13:36:21.631我们档案的时间戳:2016-06-06 09:41:08.000
  2016-06-06 13:36:21.631 Dest文件存在。
  2016-06-06 13:36:21.631现有档案的时间戳:2016-06-06 09:41:08.000
  2016-06-06 13:36:21.631我们的文件版本:(无)
  2016-06-06 13:36:21.631现有档案版本:(无)
  2016-06-06 13:36:21.631安装文件。
  2016-06-06 13:36:21.632已成功安装该文件。

谢谢

1 个答案:

答案 0 :(得分:2)

问题是虽然第一个条目D:\nw\testfile.db可能没有安装该文件,但它是由第二个通配符条目D:\nw\*安装的。

您必须将onlyifdoesntexist添加到通配符条目。或者,如果您需要覆盖所有其他文件(即使它们存在),请从通配符条目中明确排除testfile.db文件:

Source: "D:\nw\testfile.db"; DestDir: "{app}"; Flags: uninsneveruninstall onlyifdoesntexist
Source: "D:\nw\*"; Excludes: "\node_modules\,\testfile.db"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs