使用WiX,如何创建可以安装基本应用程序的MSI和数据库环境的三个实例(PROD,TEST,TRAIN)

时间:2014-03-19 16:22:03

标签: msbuild oracle11g wix

我有一个基础应用程序,我们称之为Navigator,并且使用此Navigator存在一个在其中运行的Web应用程序,它通过本地安装的数据库为客户提供几个信息/指标。

我们现在有这个MSI。 (WiX项目庞大且复杂,试图模块化并由24个文件组成)我们目前需要运行此MSI三次以安装三次,以便每次创建不同的环境,生产,测试和培训。

我想创建一个单一的解决方案,理想情况下允许用户通过功能树选择要安装的环境。

我已经对这个主题进行了很多研究,并找到了许多我无法成功应用的可能解决方案。

一种解决方案是使用Burn引擎基本上拍摄三个单独的安装。我还没有尝试过。

第二个解决方案是使用InstanceTransforms。根据我的阅读,为了使用InstanceTransforms进行安装,必须使用命令提示符来安装每个实例(即msiexec / i Navigator.msi MSINEWINSTANCE = 1 TRANSFORMS =":TEST),那么如何整合要让用户选择要安装哪些功能的功能树?然后不使用命令提示符进行安装。必须是用户友好的。

第三种解决方案是为每个安装程序使用唯一的UpgradeCode,并使用MSBuild社区任务。我在WiX tricks and tips

下找到了这个

什么是最好的'解决这个问题的解决方案,并保持用户友好,理想情况下使用功能树或类似的东西?

我想跟进这个...... 导航器安装在Program Files中 WebApp是一个分析工具,可以自定义设置和报告,它需要在ProgramData中,因为它需要读/写功能

目前,我们使用Xcopy / Robocopy在ProgramData中制作三份WebApp副本,以制作WebApp_PROD,WebApp_TEST,WebApp_TRAIN并手动更新一些配置文件,并将其添加到IIS。

这一切都可以通过FeatureTree或其他方式完成,以检查用户想要安装的内容并保留此结构并更新相应的文件? WiX可以为这种效果做XCopy / Robocopy还是需要其他方法?

1 个答案:

答案 0 :(得分:1)

也许我误解了一些东西,但是使用单个MSI文件和(在您的情况下)这三个功能来执行此操作是很正常的。在第一次安装时,用户选择需要哪些功能,可能是一个或全部三个。稍后,用户可以通过转到“程序和功能”并进行更改来决定添加或删除功能。这是正常的,正如我所说的那样,我不明白你是如何运行相同的MSI三次来安装这些功能的,而不仅仅是用户选择它们的一次。也许你实际上没有用户界面来选择功能?