构建可以使用多个配置多次(到不同文件夹)安装相同软件包的安装程序

时间:2009-11-11 14:23:24

标签: c# .net installer service wix

我们有一个奇怪的设置,这来自我们为客户提供软件托管安装的事实,每个客户可能使用我们软件的不同版本并运行单独的数据库。

我们还允许客户(根据不同的许可方案)在他们自己的机器上本地安装我们的软件。

这使得为我们的某个应用程序(.NET窗口服务)构建一个安装包MSI(我们正在使用WIX)相当困难,而且我有一个主要的障碍。

我无法弄清楚如何在一台具有以下属性的计算机上安装多个版本的安装程序(MyApp V2.0.0):

  1. 添加/删除程序中的应用程序名称:“MyApp(CUSTOMERNAME)”,其中CUSTOMERNAME在安装过程中定义为GUI的一部分。

  2. 应用程序的每个实例都安装在\ Program Files \ Company \ MyApp(CUSTOMERNAME)中。

  3. 创建/更新名为“MyApp(CUSTOMERNAME)”的服务。

  4. 允许升级单个安装,而不会影响其他所有安装。

  5. 基本上影响一个实例的安装不应以任何方式影响任何其他实例。

    有谁知道如何实现这一目标或是否有其他可用技术?

    感谢。

2 个答案:

答案 0 :(得分:2)

请参阅Installing Multiple Instances of Products and Patches上的Microsoft文档。

基本上,你不能在运行时“在MSI内部”执行此操作(不破坏Windows Installer的其他核心功能,在这种情况下,您可能只使用非MSI解决方案,例如NSIS)

如果要创建一个真正动态的系统,最终用户可以在运行时定义多个实例,您需要创建一个引导用户提供信息的引导程序,动态生成MST然后启动具有所需参数的MSI。或者,根据每个客户自己创建MST(脚本非常简单......查看Windows SDK中提供的示例)

上个月,有人试图在同一台服务器上使用WiX安装多个网站时,有人试图这样做,从内存开始讨论on the WiX list。如果你能找到相关的主题,应该有更多的反应,而不是我的那些:)

答案 1 :(得分:0)

如何使用应用于原始MSI的MSI Transforms。您需要的每种特殊配置的一个转换。唯一的想法是,为了在一台机器上安装相同的软件包,您需要更改产品GUID,我不确定转换是否允许。值得研究它!