代码之家  ›  专栏  ›  技术社区  ›  roo

使用innosetup强制单一安装?

  •  1
  • roo  · 技术社区  · 14 年前

    我们有一个申请,我们授权给不同的公司。这个应用程序是根据他们的品牌定制的;基本上是同一个应用程序,但有不同的主题文件。我们为每个供应商生成不同的安装程序,因为每个应用程序需要不同的配置(连接到的服务器、更新等)。

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

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

    inno setup中是否有一些设置可以检查是否存在现有安装(来自同一供应商或不同供应商),并告诉用户必须删除现有安装?

    2 回复  |  直到 14 年前
        1
  •  2
  •   mghie    14 年前

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

    所以只要你有相同的 AppId 对于所有不同的品牌,两种配置/品牌不可能安装在同一个系统上。现在,与其取消正在运行的安装,不如让您的安装程序足够聪明,可以自己处理这个问题。

    使用inno setup scripting检查以前是否安装了其他品牌,或者当前品牌是否正在更新。你可以使用 SetPreviousData() GetPreviousData() 支持函数将某些数据保存到注册中心(对于品牌是唯一的),并在安装程序初始化事件函数中进行测试(请参阅文档)。如果先前保存的数据与即将安装的品牌匹配,则可以继续更新安装。如果不同,您可以询问用户是取消还是替换已安装的品牌。

        2
  •  0
  •   Avinash    14 年前

    您可以手动选择要安装的品牌,但不能 设置品牌然后文件…

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