如何发布一个Windows窗体应用程序?

21

我写了一个C#程序,非常不错(是一个Windows窗体应用程序)。问题在于,我不知道如何在调试模式表单之外使用它。我该如何发布它?我的目标是创建两个文件夹,在其中一个放置应用程序的快捷方式,另一个文件夹包含应用程序和所有外部程序(一些按钮链接到批处理文件)。然后我想能够将其放入RAR压缩文件中,并将其上传到网上供其他人下载。

我该如何发布它,以便这样做?我如何将其从调试模式中取出?


为每个平台创建自己的更新/下载/维护解决方案并不明智,除非您使用ClickOnce技术,否则.NET框架已经提供了这些功能。如果您相应地更改问题,我可以教您如何做到这一点。 - Alan Turing
如果您将使用ClickOnce,您将能够自动更新应用程序到客户端,并在需要时覆盖(例如,在实际使用生成的进程之前调用某些批处理、通知用户可用更新等),使用ClickOnce技术重写应用程序的分发逻辑。您将能够直接从构建环境发布更新版本。 - Alan Turing
此外,ClickOnce技术几乎可以在任何Web分发平台上使用,包括ASP.NET IIS或PHP Apache或Mono。它还可以构建可更新的CD分发或网络共享。 - Alan Turing
你想为你的项目制作一个安装程序吗? - Bengi Besçeli
4个回答

26

进入你的项目文件夹,然后导航到 /bin/Release。如果那里有一个以你的项目名称命名的 EXE 文件,复制它到其他地方(连同任何你可能链接的 DLL 文件),这就是你的程序。如果没有找到该文件,请尝试在 Visual Studio 中进行“生成”->“编译解决方案”。如果还是找不到,改为导航到 /bin/Debug 并执行相同的操作。然后,将所有批处理文件复制到另一个文件夹中,并将它们放在同一个文件夹中,最后压缩成 RAR 格式。

P.S. 尽量不要使用 RAR,因为很少有人能解压它们。如果可以的话,请使用 ZIP 或 SEA(自解压归档)格式。


9
我下投了你的答案,因为你建议将输出RAR压缩到Debug目录中。除非你有特定的原因需要这样做,否则不应该分发调试版本的应用程序。 - debracey
5
@Jacob:是的,但是ZIP功能已经内置于Windows、Mac和Linux系统中了。而WinRAR需要安装,有些权限受限的用户可能无法安装。当然,如果你的程序需要这些权限才能运行,那就不重要了。@Chris Fulstow:谢谢 :) - Ry-
好的 - 现在你的回答已经足够了,做得很好。+1 是的,我知道实际的代码不是在调试版本中,但是还有其他一些小细节使得调试构建在分发方面不那么有优势。 - debracey
我想应该有比那个更好的解决方案,而且仅使用静态链接的DLL有时不足以构建现代应用程序(例如可扩展的应用程序,使用MEF或Unity作为容器)。 - Alan Turing

19
首先,您需要在Visual Studio中将应用程序构建为Release模式,只需更改窗口顶部附近的下拉菜单为“Release”。这将创建一个包含源代码的bin/Release目录。该文件夹将包含应用程序的EXE和需要包括的DLL。它可能(并且很可能)包括一些调试*.PDB文件,您不希望包括其中的调试信息。
将该目录的内容复制到其他地方并进行RAR压缩。
以x86模式构建
(仅在有特定原因时才应执行此操作)
如果您的应用程序使用的第三方DLL不兼容64位,则可能需要以x86模式进行发布构建。要做到这一点,请单击“任何CPU”下拉菜单,然后单击“新建配置”(或类似的选项),并按照添加x86的步骤进行操作。然后使用x86 - Release设置进行构建。这将输出x86二进制文件到bin/x86/Release文件夹,该文件夹位于源代码所在位置。
首选解决方案
大多数用户会更喜欢某种形式的自动安装程序,而不是简单的RAR或ZIP。Visual Studio(Standard / Pro)可以创建自我安装的MSI,为您完成所有工作。基本概述在这里。您可以使用Visual Studio提供的向导添加快捷方式/等。

如果您需要更强大的安装程序,您可以查看像InnoSetupNSIS这样的解决方案。


通过使用ClickOnce,您实际上将避免DLL地狱。 - Alan Turing

7
要将应用程序构建在Release模式而不是Debug模式下,请转到“生成”菜单并选择“配置管理器”。
活动解决方案配置更改为Release。现在,当您构建解决方案时,它会将可执行文件放置在/bin/Release文件夹中。
如果您需要在解决方案构建完成后自动执行某些操作,例如打包成RAR或ZIP存档并将可分发文件复制到另一个文件夹中,请查看后期构建操作

如果用户覆盖默认的输出路径和目标平台,或在不同的开发平台上编译,则指定的路径可能无效,并且针对应用程序的特定版本进行定位。例如,默认输出路径可以定位到(bin\x86\Debug、bin\x64\Debug、<自定义用户路径>)。 - Alan Turing
@Artur 是的,但问题中没有提到多架构构建,所以这不是一个考虑因素。 - Chris Fulstow

-1

在 Visual Studio 2010 之后,微软从 Visual Studio 中删除了“Make setup utility”功能,我们必须单独从以下链接下载插件:

Get InstallShield Limited Edition for Visual Studio

您需要填写申请表

安装完成后,进入 Visual Studio-->新建项目-->其他项目类型-->设置和开发

您将看到以下屏幕

enter image description here

现在,您可以进入InstallShield安装程序实用程序,并根据您的要求更改设置。

enter image description here

将项目调试文件夹中的所有文件添加到以下界面中,并构建解决方案,

最终设置将位于您的设置文件夹中-->Express\CD_ROM\DiskImages\DISK1**

希望这能帮到您。


你是认真的吗?他应该从Debug文件中构建解决方案吗? - user8465989

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