Visual Studio 将项目发布到一个简单的安装程序中

Posted

技术标签:

【中文标题】Visual Studio 将项目发布到一个简单的安装程序中【英文标题】:Visual Studio Publish Project Into One Simple Installer 【发布时间】:2018-06-04 19:23:46 【问题描述】:

我有一个相当大的项目,其中包含多个类、500 多个图像和 20 多个与该项目相关的文本文件。

我一直通过右键单击project->properties 并单击发布选项卡来发布我的项目。我已经将文本文件和图像包含为resources

问题是每当我安装一个应用程序时,通常它是一个简单的安装程序,即你下载一个安装程序(一个文件,如 installer.exe),运行这个文件,然后引导你完成设置,比如安装在哪里它到,等等。然后安装应用程序,就是这样。

好吧,在发布我的应用程序时,我指定了一个输出目录,剩下的就是这些文件:

应用程序文件 MyProjectName.application(清单?) setup.exe

如果我运行setup.exe,我可以安装该应用程序并毫无问题地运行它。但是,它不仅不允许我选择安装它的位置,而且我必须将所有 3 个文件都发送给用户。我试图只将setup.exe 发送给朋友,但它说他们缺少所需的文件(我假设这是application files.application 的用途)。

我将如何将这些全部整合到一个安装程序中,该安装程序更符合您安装企业应用程序的方式(考虑安装 chrome、eclipse、photoshop 等)?

我很高兴能够拥有一个作为安装程序的文件,并且能够让用户下载它。

谢谢

【问题讨论】:

看看WiX。它有一点学习曲线,但擅长创建可以安装整个应用程序的单个 .exe。 这是 Visual Studio 的插件吗?我无法从他们的网站上一眼看出 有一个名为 WaX 的插件可帮助您将文件添加到安装程序,但您仍需要先熟悉 Wix 的工作原理。 谢谢,我去看看。 在我的回答被否决后稍微详细说明了。 【参考方案1】:

古人:如果下面是TL;DR(太长,没看懂),请略过这两个链接:

Troubleshooting Setup and Deployment Projects Why use Windows Installer XML (WiX) over VDPROJ?

更新2018 年 9 月 - 由于这个“答案”最近被否决,让我尝试添加更多链接,看看是否意图 答案可以更清楚。不要过于戏剧化,但是:

As deployment specialists we have to warn people when they commit to using a tool that is bound to fall apart for them down the line when more advanced deployment requirements invariably surface

安装程序项目多次被pulled back and then re-introduced in Visual Studio。总是基于看到的问题 使用这些项目类型(只是较大的):

1) 不支持 MSBuild(我没有进行过广泛的测试,但其他人没有进行广泛测试),2) 仅在系统上下文中运行的延迟模式自定义操作(不可插入在 GUI 中),3) 总体控制非常有限(总是宣传快捷方式,无法配置某些东西等...),4) 不支持适当的服务安装 - 需要自定义操作,5) 捆绑的可用先决条件很少,6) 基本的 GUI,灵活性很小,7) 似乎无法定义 MSI 功能(如在功能和组件中)、8) 与32 / 64 bitness issues for custom actions 的问题等...

有关此项目类型及其问题的旧 MSDN 页面:Troubleshooting Setup and Deployment Projects。

MSI 专家 Chris Painter 和其他人:

Are Visual Studio Setup projects suitable for complex setups? Why use Windows Installer XML (WiX) over VDPROJ?(推荐)

在我看来,该项目类型仅适用于简单的.NET 应用程序。任何口径的复杂性,你都会遇到麻烦。 SQL ScriptsIIS、正确的 COM / COM+Users & GroupsSharesFirewall RulesCustom GUI 等......商业工具和 WiX 对这些东西有高级支持。编译后的 MSI 文件的内部结构也不符合标准(使用自注册、服务的自定义操作等)。我经常遇到该工具也因“某些未知原因”而停止工作。突然编译不出来了。 Concrete Example(有修复)。

替代方案

Simple List View of Deployment Tools

WiX Quick-Start Hints(如果该工具需要免费)

How to create windows installer (各种部署工具的链接,MSI优势总结和 一些趋势部署技术的简要描述)

The open source WiX toolkit 具有一个名为 Burn 创建这样的 setup.exe 启动器/下载器 /bootstrappers - 用于按顺序运行多个安装和/ 或安装先决条件(一个非常常见的任务 - Visual Studio 项目 仅支持一些先决条件)。

使用此刻录功能需要编写 WiX XML 标记代码。 商业工具Installshield 和Advanced Installer 提供 GUI 功能来构建此类 setup.exe 文件。


Visual Studio 安装程序 非常有限,我从不使用它。 WiX(链接到试图为 WiX 速成课程提供一些链接的答案)是一个成熟的开源部署解决方案。您需要一段时间才能掌握,但它非常好且灵活。 InstallshieldAdvanced Installer 等商业解决方案可让您更快、更轻松地提供设置,但它们可能非常昂贵。

鉴于 Visual Studio 安装程序项目(和错误)的局限性,我相信正确的解决方案是使用不同的工具: What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc。如果你需要任何先进的东西,否则你会很挣扎。使用更高级的工具,至少可以做您需要的事情,即使有时可能会涉及更多。

请告诉我您想了解的有关此类流程的信息,我会尽力提供帮助。我不确定您提供的软件是什么,目标用户群是什么,您的预算是多少等... Windows Installer 非常适合 a number of corporate benefits,但存在其他部署技术(请参阅上面对各种工具的描述使用)。

【讨论】:

确实,当您开始使用Visual Studio Installer Project Extension 时,您正在为后来的自我进化问题埋下过多的根本原因。最突出的影响是您的设置几乎总是随着时间的推移停止工作,您需要各种解决方法才能使其再次工作。这适用于复杂的项目/解决方案。恕我直言,此工具可用于快速设置简单项目。因为它设置得非常快。但这是我能看到的唯一优势! ;-) 是的,快速设置应该更容易。 WiX 工具包中的Dark.exe 可以将现有的 MSI 文件反编译为 WiX 标记。需要一些清理,但转换效果很好。高级安装程序 - 我认为 Installshield 也可以 - 也可以导入 VS 安装程序项目。遇到困难时可以帮助自己的一些方法。

以上是关于Visual Studio 将项目发布到一个简单的安装程序中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Visual Studio Express 2013 将 C# 接口实现/合并到一个简单的 C++ 程序中

将引导主题超级英雄添加到 Visual Studio 2017 C# mvc 项目中

将crm 4插件项目从visual studio 2005升级到visual studio 2010

如何使用“保存到..”对话框将字符串从 EditControl 写入 Visual Studio 2008 中的文本文件?

将xamarin android控件添加到visual studio工具箱中

将一个项目的 Visual Studio 设置复制到另一个项目