2010-03-05 82 views
1

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

所以每个安装程序包含相同的编译的应用程序,但有不同的配置。所有这一切都是由我们的编译系统,从而增加新的供应商管理仅仅是一个创建一个新的主题事项和简单的包括Inno Setup的脚本。

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

是否有Inno Setup的一些设置,将检查是否有现有的安装(无论是从同一个供应商或不同的一个),并告诉他们要删除现有安装的用户?

回答

2

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

因此,只要您对所有不同的品牌拥有相同的AppId,就不可能将两个配置/品牌安装在同一个系统上。现在,不要取消正在运行的安装,而应该简单地让安装程序足够聪明来处理这个问题。

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

0

您可以手动选择你要安装的品牌,但你不能 集品牌接档...

只要求用户选择品牌....从来没有提供他们选择文件..并添加不同的二进制与不同的品牌..