我们有一个申请,我们许可分开公司。该应用程序是根据自己的品牌定制的;基本上它是相同的应用程序,但具有不同的主题文件。我们为每个供应商生成单独的安装程序,因为每个应用程序需要不同的配置(连接到的服务器,更新等)。
因此每个安装程序包含相同的已编译应用程序但具有不同的配置。所有这些都由我们的构建系统管理,因此添加新供应商只需要为Inno Setup创建一个新主题和一个简单的包含脚本。
我们的问题是,我们希望确保当用户从供应商A安装应用时,他们将无法从供应商B安装该应用,除非他们明确卸载现有应用。
Inno Setup中是否有一些设置会检查是否存在现有安装(来自同一供应商或不同的供应商)并告诉用户他们是否必须删除现有安装?
答案 0 :(得分:2)
设置将始终检查是否存在具有相同AppID
的先前安装,如果它找到一个不会在软件小程序中创建新条目,新数据用于卸载等,它将改为更新使用新文件和设置的先前安装,将新数据合并到现有数据中,并将单个条目保留在软件小程序中。
因此,只要您对所有不同品牌拥有相同的AppId
,就不可能在同一系统上安装两个配置/品牌。现在,您不应该取消正在运行的安装,而应该让您的安装程序足够智能,以便自行处理。
使用Inno Setup脚本来检查以前是否安装了其他品牌,或者当前品牌是否正在更新。您可以使用SetPreviousData()
和GetPreviousData()
支持函数将某些数据保存到注册表中,该数据库是品牌特有的,并在其中一个安装程序初始化事件函数中对其进行测试(请参阅文档)。如果先前保存的数据与即将安装的品牌匹配,您只需继续更新安装即可。如果不同,您可以询问用户是取消还是更换已安装的品牌。
答案 1 :(得分:0)
您可以手动选择要安装的品牌,但不能 设置品牌然后归档......
只要求用户选择品牌....永远不要让他们选择文件..并添加不同品牌的不同二进制..