如何防止Inno Setup在创建安装程序和便携式提取器时多次添加文件



我喜欢在一个安装程序中创建安装程序/可移植提取器,有时我会使用.paf-portables,我会在[Code]部分中进行检查,这样安装程序就知道在哪里放置文件,这取决于安装还是可移植,而且效果很好,但由于我的操作方式,安装程序一直在添加文件2倍。我想知道是否有一种简单的方法可以阻止Inno Setup多次添加文件并导致大型安装程序。

示例脚本:

[Files]
;Install for x64 & x86
Source: "{app}shared*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not InstallType('Portable');
Source: "{app}x64*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: isWin64 and not InstallType('Portable');
Source: "{app}x86*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not isWin64 and not InstallType('Portable');

;Portable.PAF
;Source: "AppPortable.PAF*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; check: InstallType('Portable')
Source: "AppPortable.PAF*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: InstallType('Portable');
Source: "{app}shared*"; DestDir: "{app}AppProgramFiles64"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: InstallType('Portable');
Source: "{app}shared*"; DestDir: "{app}AppProgramFiles"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: InstallType('Portable');
Source: "{app}x64*"; DestDir: "{app}AppProgramFiles64"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: InstallType('Portable');
Source: "{app}x86*"; DestDir: "{app}AppProgramFiles"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: InstallType('Portable');

我尝试过这样的东西,但没有运气:

#If  "not InstallType('Portable')"
Source: "{app}x64";  DestDir: "{code:GetExeLocation}"; Flags: ignoreversion; Check: not InstallType('Portable')
Source: "{app}x86*"; DestDir: "{code:GetExeLocation}"; Flags: ignoreversion; Check: not InstallType('Portable')
#Else
Source: "{app}x64*"; DestDir: "{code:GetExeLocation}AppMyApp"; Flags: ignoreversion recursesubdirs createallsubdirs;; Check: InstallType('Portable')
Source: "{app}x86*"; DestDir: "{code:GetExeLocation}AppMyApp"; Flags: ignoreversion recursesubdirs createallsubdirs;; Check: InstallType('Portable')
#EndIf

如果文件在源文件夹中实际上是重复的,那么它们将被添加两次。这是InnoSetup的预期(和期望(行为。可以有多个文件,它们具有相同的源,但具有不同的目的地。

确保两种不同安装类型之间共享的每个文件都是从同一源目录添加的。InnoSetup应该只添加一次相同的文件。

最新更新