2016-04-26 154 views
0

我想将所有内容打包到C:\App\Web\*安装程序。Inno安装程序:不要安装子文件夹,如果它已经存在

如果数据库子文件夹mysql\data存在,那么我不要想要替换这些文件。

这是我的Inno Setup的脚本:

[Files] 
Source: "C:\App\Web\xampp-control.exe"; DestDir: "{app}"; Flags:  ignoreversion 
Source: "C:\App\Web\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 
Source: "C:\App\Web\*"; DestDir: "{app}"; Excludes: "C:\App\Web\mysql\data\*"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: DirExists(ExpandConstant('{app}\mysql\data\*')) 

mysql\data的文件仍然被替换。

如果应用程序已安装(即执行升级),我希望安装程序避免覆盖数据文件夹。

回答

0

你在你的脚本两个问题:

  • 第一项C:\App\Web\*副本的一切无条件。第二项不能改变它。
  • DirExists不支持文件掩码,您可以使用它来仅测试目录的存在。删除尾随\*

这是正确的做法:

[Files] 
... 

; Always install everything except the mysql\data 
Source: "C:\App\Web\*"; DestDir: "{app}"; Excludes: "C:\App\Web\mysql\data\*"; \ 
    Flags: ignoreversion recursesubdirs createallsubdirs 

; Install the mysql\data, only if is not not exist yet 
Source: "C:\App\Web\mysql\data\*"; DestDir: "{app}\mysql\data"; \ 
    Flags: ignoreversion recursesubdirs createallsubdirs; \ 
    Check: not DirExists(ExpandConstant('{app}\mysql\data')) 
相关问题