【问题标题】:Inno Setup, do not include duplicate files multiple times in the installer [duplicate]Inno Setup,不要在安装程序中多次包含重复文件[重复]
【发布时间】:2018-05-18 20:46:49
【问题描述】:

我有一个包含多个项目的 .NET 解决方案。每个项目都有自己的输出文件夹(project1 到 projectN)。所有项目都有公共文件,由 msbuild 处理到每个文件夹。 (这是正常的)。公共文件具有完全相同的名称、修改时间和内容。公用文件约占每个项目总大小的 90%。

我想用 Inno Setup / Inno Script Studio 创建一个安装程序 每个项目都有自己的组件。 (安装时可以选择)

我的 iss 文件如下所示:

Source: "{#BuildOutputDirectory}_project1\*"; Excludes: "*.pdb,*.xml"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Components: project1
Source: "{#BuildOutputDirectory}_project2\*"; Excludes: "*.pdb,*.xml"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Components: project2
...
Source: "{#BuildOutputDirectory}_projectN\*"; Excludes: "*.pdb,*.xml"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Components: projectN

我的问题是重复文件多次包含在安装程序中。项目文件夹的总大小为 517MB,uniqe 文件的大小为 78MB,安装程序大小为 98MB(压缩 lzma2 固态)。预期的安装程序大小应约为 21MB(我已使用 7-Zip 压缩了唯一文件,结果是这样)

而且安装创建时间很长,因为它会多次压缩重复文件。但这并不是真正的问题。

如何过滤重复文件? (我有一个想法,用一个已经过滤它们的简单应用程序生成 iss 文件,但这只是一种解决方法)

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    我有一个想法,用一个已经过滤它们的简单应用程序生成 iss 文件,但这只是一种解决方法

    没有更好的解决方案。

    只需考虑从 Inno Setup 预处理器(使用 Exec preprocessor function)调用应用程序(或者更确切地说是一些简单的 [PowerShell?] 脚本)。这样.iss 将自行工作,无需在编译安装程序之前运行应用程序/脚本。


    实际上,您可以完全在 Inno Setup 预处理器中实现它,而无需外部应用程序/脚本。但是在预处理器中编码并不容易。

    Do not include duplicate files multiple times in the Inno Setup installer


    对于其他类似的任务,请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多