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

Msbuild 使用WiX,如何创建可以安装基础应用程序和三个数据库环境实例(PROD、TEST、TRAIN)的MSI,msbuild,oracle11g,wix,Msbuild,Oracle11g,Wix,我有一个基础应用程序,我们称之为Navigator,有了这个Navigator,就有了一个运行在其中的Web应用程序,它通过本地安装的数据库向客户提供了一些信息/指标 我们现在有这个微星。(WiX项目庞大而复杂,试图模块化,由24个文件组成)我们目前需要运行此MSI三次,以安装三次,从而在每次生产、测试和培训时创建不同的环境 我想创建一个单一的解决方案,理想情况下,它允许用户通过功能树选择要安装的环境 我对这个话题进行了大量的研究,发现了许多可能的解决方案,但我一直未能成功应用 其中一个解决方案

我有一个基础应用程序,我们称之为Navigator,有了这个Navigator,就有了一个运行在其中的Web应用程序,它通过本地安装的数据库向客户提供了一些信息/指标

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

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

我对这个话题进行了大量的研究,发现了许多可能的解决方案,但我一直未能成功应用

其中一个解决方案是使用Burn引擎来完成三个独立的安装。这个我还没有试过

第二个解决方案是使用InstanceTransforms。据我所知,为了使用InstanceTransforms安装,必须使用命令提示符安装每个实例(即msiexec/I Navigator.msi MSINEWINSTANCE=1 TRANSFORMS=“:TEST)那么,如何集成一个功能树,让用户选择要安装的功能?然后不使用命令提示符进行安装。必须是用户友好的

第三种解决方案是为每个安装程序使用唯一的升级代码,并涉及使用MSBuild社区任务

解决这个问题并保持用户友好的“最佳”解决方案是什么,最好是使用功能树或类似的东西

我想跟进这件事。。。
导航器安装在程序文件中 WebApp是一种分析工具,用户可以在其中自定义其设置和报告,它需要在ProgramData中,因为它需要读/写功能

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


这一切都可以通过FeatureTree或其他方式来检查用户希望安装什么并保持这种结构并更新适当的文件吗?WiX可以这样做吗?或者需要另一种方法吗?

也许我误解了一些东西,但使用单个MSI文件和(就你而言)这三个功能。在第一次安装时,用户选择需要哪些功能,可能是一个功能,也可能是全部三个功能。稍后,用户可以通过转到“程序和功能”并进行更改来决定添加或删除功能。正如我所说,这是正常的,我不明白您是如何达到这样的程度:在我的电脑上运行同一个MSI三次安装这些功能,而不是只在用户选择的地方安装一次。也许您实际上没有用户界面来选择功能?

除非我过于复杂,否则我需要在单独的目录(PROD、TEST、TRAIN)中复制数据库环境三次。当前用户界面要求基本安装目录,然后要求配置数据库e(用户、密码、数据库名称),然后是一些Oracle配置路径(TNSNAMES.ORA)然后开始安装。理想情况下,我需要一个功能树,以选择我需要的环境,并能够通过UI一次性配置每个数据库。您可能不需要复制数据库。通常的方法是安装一个不可见的功能,无论选择了什么可见的功能,都会始终安装该功能。您的常用文件全部都放在那里。如果是同一个目录,我不理解三个单独的目录。除非应用程序无法找到它,否则请将数据库放在本地应用程序数据文件夹中。这会允许单独卸载或升级每个功能吗?功能不升级-升级或修补程序处于整个MSI文件的级别。导航器是I安装在程序文件中。WebApp是一种分析工具,用户可以在其中自定义其设置和报告,它需要在ProgramData中,因为它需要读/写功能。目前,我们使用Xcopy/Robocopy在ProgramData中制作WebApp的三个副本,以制作WebApp_PROD、WebApp_TEST、WebApp_TRAIN并手动更新一些配置文件les并将其添加到IIS。这一切都可以通过FeatureTree完成,并让它更新相应的配置文件并为每个iInstance创建新的目录吗?WiX可以这样做吗?