摘要
由于维克斯#实际编制MSI当你“运行”它创建,并使用WiX的工具包中的.exe文件,你将需要输出的可执行维克斯#+ WiX的工具包创建到Drop文件夹。然后确保WiX工具包可执行文件在您的PATH或您的输出文件夹中,并且创建Powershell脚本以在drop文件夹中调用您的Wix#可执行文件。一种简单的方法是为每个单独的“产品安装程序”安装一个Wix#项目,并将每个Wix#可执行文件输出到您的drop文件夹,以便通过下游Powershell(或其他)进一步处理/生成MSI文件。脚本。
我正在使用Wix#集成到VS2013 IDE中,所以我的答案应该在上下文中解释。我的Wix#安装程序只是我整体解决方案中的几个项目中的一个。
例如用于Visual Studio解决方案的单一维克斯#项目
因此,举例来说,如果你的维克斯#项目代码文件是建立在VS的一份名为MyWebsiteSetup项目和维克斯#代码文件是MyWebsiteSetup.cs,Wix#可执行文件将位于\ MyWebsiteSetup \ bin \ debug \ MyWebsiteSetup.exe。
已经建立将这个MyWebSiteSetup.exe文件放在drop文件夹中,以及其他文件Wix#放置在bin \ debug文件夹中。然后让第二组脚本运行MyWebsiteSetup.exe程序,该程序将生成MSI。我相信您可能需要将Wix#代码所需的安装组件文件以及预期的文件夹结构部署到drop文件夹中。 Wix#似乎将所需的所有其他支持文件放在bin \ debug文件夹中,因此只需将Wix#项目的bin \ debug中的所有文件复制到drop文件夹即可获得所需内容。
适应多种产品(多维克斯#项目)
现在的例子中,你的问题是如何为多个网站,所有的文件都放在同一个文件夹下降做到这一点。有几种方法可以解决这个问题,但我建议在Visual Studio中为每个单独的产品分别提供一个Wix#项目,并为每个部署到drop文件夹的项目提供Wix#输出文件以及产品文件。如果您的独立产品被命名为MyWebSiteSetupA,MyWebSiteSetupB和MyWebSiteSetupC,则它们将生成可执行文件MyWebSiteSetupA.exe,MyWebSiteSetupB.exe和MyWebSiteSetupC.exe。你可以简单地让你的第二组脚本依次调用每一个脚本。这些项目的每个Wix#代码文件(.cs文件)当然都会被编码,以便知道它运行时需要提取哪些文件,以及运行结果的exe文件时,它将获取它所需的文件,前提是您可以在预期的时间内使用它们,并为每个产品的安装程序构建单个MSI。
当然,还有很多其他的方法,像PowerShell这样的灵活工具,每种方法都有优点和缺点,但我希望这可以帮助您开始使用一种方法,然后根据需要量身定制方法。
开始的这条线“这对于EXE是有问题的......”目前还不清楚,我不确定你在做什么,你能改述吗?另外,你使用的是什么类型的构建脚本,如果是MSBuild或其他方法,将会有不同的方法。 – 2011-03-12 03:22:14
而问题是? – 2011-03-14 20:52:00