【问题标题】:Visual Studio Publish Project Into One Simple InstallerVisual Studio 将项目发布到一个简单的安装程序中
【发布时间】:2025-12-21 09:30:15
【问题描述】:

我有一个相当大的项目,其中包含多个类、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 的工作原理。
  • 谢谢,我去看看。
  • 在我的回答被否决后稍微详细说明了。

标签: c# visual-studio visual-studio-2017 installation


【解决方案1】:

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


更新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 和其他人:

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

替代方案

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

使用此刻录功能需要编写 WiX XML 标记代码。 商业工具InstallshieldAdvanced 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 安装程序项目。遇到困难时可以帮助自己的一些方法。
最近更新 更多