Inno setup Inno安装程序-基于功能和自动更新安装文件

Inno setup Inno安装程序-基于功能和自动更新安装文件,inno-setup,Inno Setup,我们需要在Inno设置中完成以下要求。我们需要支持基于密码的文件安装,以及通过internet更新或DVD自动更新下一版本 要求是: 对于一个应用程序,我们有几个通用文件 最重要的是,我们需要根据每个功能的密码安装FeatureUrea或FeatureB或FeatureC。像这样,我们有20个不同的功能 用户一次只安装一个功能。但他们可以根据密码添加其他功能 以上场景用于从DVD映像运行安装程序。在int更新的情况下,客户安装的所有功能应自动更新,而无需用户提示密码。它应该默默地进行 例如:

我们需要在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的回复以及您关于静默安装时自动选择已安装组件的提示。这是非常有用的。然而,我们在这方面有一些小的复杂性。在互联网更新的情况下,我们将根据客户安装的功能发布更新,请发布新问题。