MVC Core MSI Builder,如何创建安装程序?

3
我写了一个MVC核心应用程序,下一步是将其打包成MSI并分发给客户。问题在于:我似乎找不到任何内置的方法来自动捕获所有内容文件和dll,并将它们包装在MSI中。到目前为止,我尝试了Windows Installer和WiX(确切地说是Heat),但两者似乎都没有内置的方法与.NET Core配合使用。微软是决定它不够重要还是我缺少重要的东西?我可以尝试逐个文件地放置所有输出和所有依赖项,但这将非常难以维护,使用新的Nuget方法需要许多dll才能完成项目,加上所有内容就变得非常庞大。任何帮助将不胜感激。

2
一个非常有趣的问题。 - Christopher Painter
1个回答

4
我还在适应这个“现代”世界,我想知道为什么你要将.NET Core应用程序打包成MSI文件。我认为你会在“云”中或者在不支持MSI的Nano服务器上运行它,或者在Windows服务器应用(appx)中运行它。对于实际的Windows服务器,我会使用老旧的.NET。(我仍然非常喜欢它。)
话虽如此,我有一个名为IsWiX(CodePlex)的开源程序,并且有一个非常简单的模式来创建ASP.NET网站安装程序(请参见视频:https://www.youtube.com/watch?v=pgDf1kv8a-4),我愿意与您合作,为asp.net-core mvc应用程序提供类似的故事。
从我所读的内容来看,.net core应用程序也支持msbuild发布配置文件。这就是我用来创建模型的方式,然后我只需将我的文件拖放到IsWiX中,让它为我编写所有的XML。
顺便说一句,网站安装程序总是有很多文件。即使在nuget和npm之前,网站开发人员可能通过添加Infragistics等组件,将几千个文件添加到他们的项目中。我曾经参与过一个有超过30万个文件的安装程序。天哪!我一直希望有一种方法可以创建这些文件的未压缩存档,IIS可以将其视为目录,但据我所知,这从未发生过。
MSI世界是一个声明性的世界,在这里我们需要明确列出每个文件。Web开发人员生活在一个只需说“发布”而不关心这些细节的世界中。这就是我试图用IsWiX弥合的差距。

2
哇,如果我几天前就知道你的工具就好了...最终我做了一些几乎相似的事情,我使用msbuild发布配置文件发布了我的项目,并创建了一个简单的winform应用程序来解析目标文件夹并为wix构建xml。非常感谢您的回复和项目。关于您的第一段,我知道现代方法是朝着“云”解决方案的方向发展,但有时候组织机构并不总是允许访问互联网,他们只需要在一个服务器上安装一个简单的Web服务,并以熟悉的方式进行部署。现代化什么的,无所谓。 - Yuval Perelman
是的,“现代”人只看到了新的方式。我仍在尝试以不同的方式混合一些老派和新派的方法。如果有一个常见的故事,我想将一个asp.net core应用程序部署为MSI并配置IIS作为反向代理,那么我很想了解并创建一个模板。您可以帮助我理解我还不理解的部分。 - Christopher Painter
@user2033402 你提到了 - "我使用msbuild发布配置文件发布了我的项目,并创建了一个简单的winform应用程序来解析目标文件夹并为wix构建xml". 你能分享一下你的步骤吗? - Vishal26
@Vishal26 我可以,但为什么不使用CristopherPainter的工具呢?如果我事先知道它,这就是我会使用的。没有必要开发别人已经开发过的东西。但步骤是:在项目上点击右键,按发布->创建一个自定义发布配置文件到文件系统中的文件夹->制作一个Winform\Console应用程序来解析发布的文件夹并将其放入wix xml结构中->将此xml放入您的product.wxs文件中。我可以分享代码,但这是多余的,因为Christopher做得更好,而且它是开源的。 - Yuval Perelman
我已经解决了这个问题。而且看起来这与回答你的问题和部署你的应用程序直接相关。 - Christopher Painter
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接