使用共享文件正确显示零部件尺寸



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

由于共享部件,这些组件的空间需求根本没有显示出来。就其本身而言,这并不是一个真正的问题,但组件选择器底部的总大小似乎只结合了为所有组件安装的文件,以及可以计算大小的组件的大小。

虽然由于共享文件的原因,无法显示单个大小,但总大小是完全可以确定的。有没有可能以某种方式给用户一个正确的总尺寸估计?

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

如果安装没有应用程序的公共文件或没有公共文件的应用程序(例如,这些文件是应用程序的依赖项(是没有意义的,那么根本不要将它们列为[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,但如果两者都未选择,则不会安装。是否选择app3并不重要。(请注意,如果一个文件对所有组件都是通用的,那么您可以完全忽略Components:参数。(

为了确保至少选择了一个组件,您需要遍历wpSelectComponentsNextButtonClick中的WizardForm.ComponentsList,或者(如果您不介意对所有组件的名称进行硬编码(确保IsComponentSelected在提供所有组件名称时返回true。

最新更新