【问题标题】:Enforce single installation with Innosetup?使用 Innosetup 强制单一安装?
【发布时间】:2010-03-12 19:55:55
【问题描述】:

我们有一个应用程序,我们授权给不同的公司。该应用程序经过定制以适合他们的品牌;基本上它是同一个应用程序,但具有不同的主题文件。我们为每个供应商生成单独的安装程序,因为每个应用都需要不同的配置(要连接的服务器、更新等)。

因此,每个安装程序都包含相同的已编译应用程序,但配置不同。所有这些都由我们的构建系统管理,因此添加新供应商只需为 Inno Setup 创建一个新主题和一个简单的包含脚本。

我们的问题是,我们希望确保当用户从供应商 A 安装应用程序时,他们将无法从供应商 B 安装应用程序,除非他们明确卸载现有应用程序。

Inno Setup 中是否有一些设置会检查是否存在现有安装(来自同一供应商或不同供应商)并告诉用户他们必须删除现有安装?

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    安装程序将始终检查是否存在具有相同AppID 的先前安装,如果找到,则不会在软件小程序中创建新条目、用于卸载的新数据等,而是更新先前的使用新文件和设置进行安装,将新数据合并到现有数据中,并将单个条目保留在软件小程序中。

    因此,只要您为所有不同品牌使用相同的AppId,就不可能在同一系统上安装两种配置/品牌。现在,与其取消正在运行的安装,不如让您的安装程序足够聪明,让它自己处理。

    使用 Inno Setup 脚本检查以前是否安装了其他品牌,或者当前品牌是否正在更新。您可以使用SetPreviousData()GetPreviousData() 支持函数将一些数据保存到品牌独有的注册表中,并在其中一个设置初始化事件函数中对其进行测试(请参阅文档)。如果之前保存的数据与即将安装的品牌相匹配,您只需继续更新安装即可。如果不同,您可以询问用户是取消还是更换已安装的品牌。

    【讨论】:

      【解决方案2】:

      您可以手动选择要安装的品牌,但不能 设置品牌然后归档...

      只要求用户选择品牌..从不让他们选择文件..并添加不同品牌的不同二进制文件..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多