使用共享文件正确显示组件大小

时间:2013-05-21 12:39:41

标签: inno-setup pascalscript

我有一个inno安装项目,其中包含5个不同的子程序,可作为组件安装。最终程序文件夹中的许多dll在其中一些文件夹中共享,但并非全部共享。我已经制作了一个工具来整理常见的dll,使我的安装程序尽可能紧凑。

由于共享部件,这些组件的空间要求根本不会显示。这本身并不是问题,但组件选择器底部的总大小似乎只是组合了为所有组件安装的文件,以及可以计算大小的组件的大小。

虽然由于共享文件而无法显示单个尺寸,但总尺寸可以完全确定。是否有可能以某种方式为用户提供正确的总大小估计值?

相关说明......是否有一种简单的方法可以确保至少需要选择一个组件?简单地添加组件:到文件中的每一行都不起作用。在使用NextButtonClick检查所有组件后,我目前在IsComponentSelected上只有一个错误框,但我想知道是否有更优雅的解决方案,因为如果我需要,这需要修改代码添加更多组件(在当前项目中,这是一个非常现实的可能性)。

1 个答案:

答案 0 :(得分:0)

如果在没有应用程序的情况下安装公共文件没有意义,或者没有公共文件的应用程序(例如文件是应用程序的依赖项)没有意义,那么就不要将它们列为[Components]根本就是(组件只是一个UI的东西):

[Components]
Name: app1; Description: "Application 1"
Name: app2; Description: "Application 2"
Name: app3; Description; "Application 3"

[Files]
Filename: ...\app1.exe; ...; Components: app1
Filename: ...\app2.exe; ...; Components: app2
Filename: ...\app3.exe; ...; Components: app3
Filename: ...\common.dll; ...; Components: app1 app2

如果选择app1或app2中的任何一个或两个,则会安装common.dll,但如果两者都没有,则会安装Components:。是否选择了app3并不重要。 (请注意,如果某个文件对所有组件都是通用的,那么您可以完全省略WizardForm.ComponentsList参数。)

为了保证至少选择了一个组件,您需要遍历NextButtonClick wpSelectComponents中的IsComponentSelected,或者(如果您不介意的话)编码所有组件的名称)确保{{1}}在提供所有组件的名称时返回true。