验证是否已安装,如果是则忽略一些文件
Verify if is installed, if yes then ignore some files
仅当我对已安装的应用程序进行更新时,我才需要忽略一些文件(“.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),添加Excludes那些你不想更新的扩展。
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;
在条目中添加检查参数并确保在更新情况下检查功能returns false。下面是例子可以参考。
[文件]
资料来源:"MYPROG.EXE"; DestDir: "{app}";检查:MyProgCheck
http://www.jrsoftware.org/ishelp/index.php?topic=scriptcheck
仅当我对已安装的应用程序进行更新时,我才需要忽略一些文件(“.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),添加Excludes那些你不想更新的扩展。
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;
在条目中添加检查参数并确保在更新情况下检查功能returns false。下面是例子可以参考。
[文件] 资料来源:"MYPROG.EXE"; DestDir: "{app}";检查:MyProgCheck
http://www.jrsoftware.org/ishelp/index.php?topic=scriptcheck