如何为我的C#应用程序制作安装程序?

73

我已经使用C#Windows FormsVisual Studio 2008上创建了一个应用程序,并现在想制作这个应用程序的安装程序。如何实现呢?

我想要我的安装程序:

  • 将我的应用程序使用的所有文件复制到用户选择的路径(将文件复制到所选路径,一些用于服务器端应用程序,一些用于客户端)。
  • 同时安装.NET 3.5。
  • 检查是否安装了SQL ServerSQL Server Express Edition

如何实现?

5个回答

72
  1. 向你的解决方案中添加一个新的安装项目。
  2. 从所有你想要安装的项目中添加目标。
  3. 配置预先需求并选择“检查 .NET 3.5 和 SQL Express”选项。选择缺少组件必须安装的位置。
  4. 配置你的安装程序设置,包括公司名称、版本、版权等。
  5. 构建并运行!

如果您需要一些特定的安装逻辑,您可以编写一些代码(并添加自己的表单)来完成您所需的工作。 - sashaeve
8
这里可以找到一些不错的教程:http://www.dreamincode.net/forums/index.php?showtopic=58021 - sashaeve
4
"添加一个新的安装项目"......在“设置和部署”下,我唯一的选项是“InstallShield Limited Edition”。这似乎不是你建议的 - 是否缺少了某个步骤,需要安装某个包或其他什么东西?" - noelicus
10
我可能有点晚了,但在VS 2012及以上版本中不再支持安装程序项目。您将需要使用WiX或其他第三方工具。 - urbanhusky
4
如果你正在使用VS2015或VS2017,而“其他项目类型”树中缺少“安装和部署”,你可以从这里安装它:VS2015VS2017。请注意,安装后需要重新启动Visual Studio。 - cspete
显示剩余3条评论

18

一般来说,在Windows上推荐使用基于MSI的安装程序。因此,如果你愿意投入相当多的时间,WiX是最好的选择。

如果你想要更简单的东西,可以选择InnoSetup


如果您需要更多对MSI的控制,Wix是一个不错的选择。然而,学习使用它需要付出更多的努力。根据Wix的文档,微软Office也使用Wix来创建他们的安装程序。 - user3613932

11

有几种方法可供选择,其中两种是提供自定义安装程序或设置项目。

以下是创建自定义安装程序的方法

[RunInstaller(true)]
public class MyInstaller : Installer
{
    public HelloInstaller()
        : base()
    {
    }

    public override void Commit(IDictionary mySavedState)
    {
        base.Commit(mySavedState);
        System.IO.File.CreateText("Commit.txt");
    }

    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
        System.IO.File.CreateText("Install.txt");
    }

    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);
        File.Delete("Commit.txt");
        File.Delete("Install.txt");
    }

    public override void Rollback(IDictionary savedState)
    {
        base.Rollback(savedState);
        File.Delete("Install.txt");
    }
}

如何添加安装程序项目:

  • 菜单 文件 -> 新建 -> 项目 --> 其他项目类型 --> 安装和部署

  • 使用属性窗口设置项目属性

文章 如何使用Visual Studio .NET创建安装程序包 提供了详细信息。


当.NET 3.5将被安装在您的安装程序中时,您如何期望运行此代码? - Moon
@Moon 你可以在程序描述中说明它需要 .NET XY。 - WiiMaxx

3

对于 Visual Studio 2022 Community 版本,必须单独添加 Microsoft 的安装程序包。可以从 VS Marketplace 免费获取。


2
为什么要自己发明轮子,而不是使用已经为您准备好的汽车呢?我发现这个工具非常易于使用和直观:Advanced Installer。这个一分钟视频足以给您留下深刻印象。这里还有说明性用户指南

10
针对那些使用Advanced Installer的人,需要注意它是一个必须购买的产品。因此你需要权衡一下:是花钱购买这个产品,还是花时间学习免费但功能强大且开源的WIX,但前者比较难掌握。如果你已经有了不俗的收入,可能更好选择Advanced Installer(取决于你需要多少功能)。 - MicroservicesOnDDD
2
视频已不再可用。 - Tatranskymedved

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