对于使用Visual Studio Express但没有设置和部署项目模板的人,可以使用 .csproj 文件轻松创建 msi 安装程序?我已经阅读了(现在无法找到链接)MSBuild可以使用 csproj 文件(它被转换为MSBuild项目文件 MSBuild) - 那么对InstallShield,WIX或设置和部署项目的需求是什么?
我意识到这可能是一个简单的问题,但在网上搜索只是解释了为什么需要MSBuild - 而且这些都包含在框架本身中。
答案 0 :(得分:4)
首先澄清几点:
Visual Studio的另一种选择是SharpDevelop。它提供了自己的WiX项目模板。
您也可以手动创建WiX项目,如文档中所述。
使用明确的文件列表创建简单的MSI安装程序很容易。您还可以“收获”.csproj输出和一些其他Visual Studio项目输出,以及目录等。
大多数编辑器(包括Visual Studio Express)都会帮助您将WiX项目和源文件编辑为XML。您可能需要告诉它相关的XML Schema文件(.xsd)在哪里获得内容帮助。在这种情况下,WiX的压缩二进制分发可能最简单。
Windows Installer非常复杂。 WiX工具集允许完全访问该复杂性,同时尽量使其保持简单。使用WiX意味着至少要学习一些Windows Installer。
最终,没有任何安装程序工具可以查看您的编程项目,并决定您要发送哪些文件以及放置它们的位置。所以,不,你不能简单地通过引用.csproj来设计和构建MSI。
答案 1 :(得分:1)
我认为WiX将是最好的选择。使用Wix构建安装程序基本上是对 candle.exe 然后 light.exe 的简单调用,因此它可以在 .csproj <内的自定义MSBuild目标中自动执行/ strong>没有任何问题。
但是,需要设置 .wixproj 项目通常执行的环境。例如,您需要找到WixSDK以使用蜡烛/灯光二进制文件并将$(OutputPath)属性传递给candle.exe,以便输出文件可以在 .wxs 中使用。
毕竟,会有一个这样的目标启动安装程序构建:
<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<Exec Command="$(candleExecutable) product.wxs" />
<Exec Command="$(lightExecutable) product.wixobj" />
</Target>
您还可以向此目标添加条件,以便仅在特定配置上调用它。
答案 2 :(得分:0)
不,我不相信Express有任何办法可以做到这一点。它不是内置功能,您不能在Express中使用加载项。