Inno setup Inno安装程序-基于功能和自动更新安装文件
我们需要在Inno设置中完成以下要求。我们需要支持基于密码的文件安装,以及通过internet更新或DVD自动更新下一版本 要求是:Inno setup Inno安装程序-基于功能和自动更新安装文件,inno-setup,Inno Setup,我们需要在Inno设置中完成以下要求。我们需要支持基于密码的文件安装,以及通过internet更新或DVD自动更新下一版本 要求是: 对于一个应用程序,我们有几个通用文件 最重要的是,我们需要根据每个功能的密码安装FeatureUrea或FeatureB或FeatureC。像这样,我们有20个不同的功能 用户一次只安装一个功能。但他们可以根据密码添加其他功能 以上场景用于从DVD映像运行安装程序。在int更新的情况下,客户安装的所有功能应自动更新,而无需用户提示密码。它应该默默地进行 例如:
例如: 之前未安装我们软件的PC。客户使用SWVER001 DVD。使用Feature1PWD=>将安装基本软件+通用文件+Feature1文件 再次使用SWVER001 DVD安装。这次用户提供Feature2PWD==>将安装Feature2文件。基本软件+通用文件+功能1文件将被保留且未被触及。主Sw将同时看到功能1和功能2 用户使用internet更新安装SWVER002。在这里,安装程序应同时看到基本软件+通用文件+功能1文件+功能2文件。它应该在没有用户输入的情况下同时更新所有4个。无声更新会很好
我正在考虑以下方法 1.使用基本/通用安装文件创建一个主安装程序 2.然后为每个功能创建子安装程序 3.然后,主安装程序将根据passowrd调用子安装程序。 4.然后,主安装程序将存储在注册表/ini文件中选择的先前功能 在int更新的情况下,从registry/ini中选择上一个功能,然后在没有任何用户输入的情况下自动执行静默安装
对于在Inno设置中配置上述内容,还有其他更好的建议吗?根据每个功能创建组件并根据输入的密码自动选择组件更容易 比如:
[组件]
名称:“FeatureA”;说明:“功能A”
名称:“FeatureB”;说明:“功能B”
名称:“FeatureC”;说明:“功能C”
[守则]
函数TestComponentPassword(
密码:字符串;组件:字符串;组件密码:字符串):布尔值;
变量
I:整数;
开始
结果:=(密码=组件密码);
如果结果是这样的话
开始
对于I:=0到WizardForm.ComponentsList.Items.Count-1 do
开始
WizardForm.ComponentList.Checked[I]:=
(WizardForm.ComponentList.Items[I]=组件);
结束;
结束;
结束;
函数CheckPassword(密码:字符串):布尔值;
开始
结果:=
TestComponentPassword(密码、“功能A”、“aaa”)或
TestComponentPassword(密码、“功能B”、“bbb”)或
TestComponentPassword(密码,‘特性C’、‘ccc’);
结束;
在Inno Setup 6中,您可以使用而不是按组件名称查找组件
对于更新,请为每个组件/功能创建单独的安装程序。对所有安装程序使用相同的
AppId
,以便他们共享卸载日志。谢谢@Martin。您的解决方案对于新安装将非常有效。但升级/互联网更新不需要密码,因为我们不需要密码。逻辑应该是在DVD更新或internet更新的情况下,安装程序应该根据安装的功能自动拾取组件我想我们可以扩展一下CheckPassword,以便在升级或internet更新时检查已安装功能的ini文件或注册表。安装程序不会自动为您选择过去的组件。因此,您所要做的就是允许use选择是否需要添加新功能(并显示密码提示)或是否要更新(跳过密码提示并让Inno Setup重新加载以前的组件)。感谢@martin的回复以及您关于静默安装时自动选择已安装组件的提示。这是非常有用的。然而,我们在这方面有一些小的复杂性。在互联网更新的情况下,我们将根据客户安装的功能发布更新,请发布新问题。