C# 为每个新版本WIX创建新文件夹

C# 为每个新版本WIX创建新文件夹,c#,wix,windows-installer,installation,C#,Wix,Windows Installer,Installation,当我构建安装程序项目时,是否可以基于WIX配置文件中的项目程序集版本或版本生成新文件夹(如ClickOnce publish按钮)。 我想要这样的东西: MyProjectPublishes/ ----MyProject1.0.0.0/ MyProjectSetup.msi ----MyProject2.0.0.0/ MyProjectSetup.msi ----MyProject3.0.0.0/ MyProjectSetup.msi 是的,但请

当我构建安装程序项目时,是否可以基于WIX配置文件中的项目
程序集版本
版本生成新文件夹(如ClickOnce publish按钮)。 我想要这样的东西:

MyProjectPublishes/
----MyProject1.0.0.0/
        MyProjectSetup.msi
----MyProject2.0.0.0/
        MyProjectSetup.msi
----MyProject3.0.0.0/
        MyProjectSetup.msi

是的,但请记住,您的MSI不应进行重大升级,否则它们将删除以前的版本(除非您希望这样做;您可能希望同时安装文件夹)

首先,要理解您也不应该硬编码组件guid。虽然支持将相同的组件guid放到不同的文件夹中,但最好避免在更新和卸载时出现许多问题。维护它也是一件痛苦的事情,所以只需对组件使用自动引导即可

像这样创建目录编写(假定传入ProductVersion变量):


这只是目录表的一个示例片段。我将INSTALLDIR定义为根产品路径,这样您就可以控制进入每个版本目录的所有版本,这样用户就不会意外地践踏具有不同组件GUID的早期版本(相同位置的不同组件GUID会导致文件在卸载时被删除,因为它们不会被引用)

要安装,您可以执行以下操作:


请注意,我没有指定GUID,也没有为此指定任何其他ID。它们将被生成,GUID将是稳定的(这意味着,使用相同的版本,所有后续重建都将具有相同的GUID,直到您更改版本-这正是它应该如何工作)


要查看正在使用的示例(以及如何从引用的C#项目中的文件获取版本),请参阅。

我没有询问安装文件夹。我问到如何将msi自动构建到版本号为的文件夹“将msi自动构建到文件夹”是什么意思?构建MSI的目的是将内容安装到特定文件夹中。如果您谈论的是松散文件的源文件夹布局,那么同样的建议也适用。Name属性是默认的目标和源名称,但您也可以始终显式设置源目录。我的意思是,当您在Visual studio中单击
Build
按钮时,我希望在新文件夹中获取
.msi
文件(文件夹名称应为程序集版本)。请看我问题中的结构。然后我想为服务器上的用户发布这个文件夹,这样他们就可以下载他们需要的版本。我的问题是:这是否可以自动执行以防止版本出错。这确实是一个MSBuild问题。您需要修改$(OutDir)。WiX目标支持托管项目共享的各种标准MSBuild约定。它们默认为“bin\$(配置)”。