只有在对已安装的应用程序进行更新时,我才需要忽略一些文件(".sdf“和".config")。
我正在递归地获取文件:
[Files]
Source: "..\..\bin\Release\MyApp.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\bin\Release\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: everyone-full; Excludes: "*.key, *.udb, *.~db, *.crt"以某种方式存在?
提前谢谢。
答案1
使用onlyifdestfileexists和onlyifdoesntexist
如果文件不存在,(onlyifdoesntexist),将在第一次安装时复制您想要的所有内容。
如果文件存在,(onlyifdestfileexists),添加排除那些您不想更新的扩展名。
Source: "..\..\bin\Release\MyApp.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion onlyifdoesntexist recursesubdirs createallsubdirs; Permissions: everyone-full; Excludes: "*.key, *.udb, *.~db, *.crt"
Source: "..\..\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion onlyifdestfileexists recursesubdirs createallsubdirs; Excludes: "*.key, *.udb, *.~db, *.crt, *.sdf, *.config"答案2(尚未完全测试)
使用函数验证应用程序文件夹的存在。
[Files]
Source: "..\..\bin\Release\MyApp.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\bin\Release\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: everyone-full; Excludes: "*.key, *.udb, *.~db, *.crt"; Check: not IsInstalled
Source: "..\..\bin\Release\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: everyone-full; Excludes: "*.key, *.udb, *.~db, *.crt, *.sdf, *.config"; Check: IsInstalled
[code]
function IsInstalled: Boolean;
begin
if DirExists(ExpandConstant('{app}\')) then
begin
Result := True;
end else
Result := False;
end;发布于 2015-01-14 16:20:36
在条目中添加Check参数,并确保check函数在update情况下返回false。下面是可以参考的例子。
文件来源:"MYPROG.EXE";DestDir:"{app}";检查: MyProgCheck
http://www.jrsoftware.org/ishelp/index.php?topic=scriptcheck
https://stackoverflow.com/questions/27947514
复制相似问题