【问题标题】:Best way to deploy Visual Studio application that can run without installing部署无需安装即可运行的 Visual Studio 应用程序的最佳方式
【发布时间】:2013-06-01 12:31:30
【问题描述】:

我用 C#/.NET 编写了一个相当简单的应用程序,但找不到发布它的好方法。它是一种用户只会运行一次或每隔几个月运行一次的“工具”。因此,我希望有一种方法可以将它部署在不需要安装即可运行的地方(只需在下载后直接双击 EXE 文件即可运行)。

但是,它仍然需要(以某种方式)包含正确版本的 .NET、库等,以便它能够正确运行。我知道这在使用 ClickOnce 时包含在内,但这仍会将应用程序安装到用户的计算机上。

有没有办法做到这一点?

编辑 - \bin\Debug

myAppName.application
myAppName.exe
myAppName.exe.config
myAppName.exe.manifest
myAppName.pdb
myAppName.vshost.application
myAppName.vshost.exe
myAppName.vshost.exe.config
myAppName.vshost.exe.manifest
extraLibrary.dll

还有两个文件夹

app.publish
Resources

【问题讨论】:

    标签: c# deployment visual-studio-2012 installation clickonce


    【解决方案1】:

    这是可能的,而且看似简单:

    1. “发布”应用程序(例如,到驱动器 C 上的某个文件夹),无论是从菜单 Build 还是从项目的属性 → Publish。这将为ClickOnce 应用程序创建一个安装程序。
    2. 但是不是使用生成的安装程序,而是找到生成的文件(EXE 文件和 .config.manifest 和 .application 文件,以及任何 DLL 文件等) - 它们都在同一个文件夹中,通常位于项目文件下方的 bin\Debug 文件夹中(.csproj) .
    3. 压缩该文件夹(省略任何 *.vhost.* 文件和 app.publish 文件夹(不需要它们)和 .pdb 文件,除非您预见到直接在用户系统上进行调试(例如,通过远程控制)),并将其提供给用户。

    另一个优点是,作为 ClickOnce 应用程序,它不需要管理权限即可运行(如果您的应用程序遵循用于存储应用程序数据的文件夹的常规准则等)。

    对于 .NET,您可以检查应用程序中安装(或根本安装)的 .NET 的最低要求版本(大多数用户已经安装了它),并显示一个对话框,其中包含指向下载页面的链接Microsoft 网站(或指向您可以重定向到 Microsoft 页面的页面之一 - 如果 Microsoft URL 更改,这将使其更加健壮)。由于它是一个小型实用程序,您可以针对 .NET 2.0 来降低用户安装 .NET 的可能性。

    它有效。我们在开发和测试过程中使用这种方法来避免不断地卸载和安装应用程序,并且仍然非常接近最终应用程序的运行方式。

    【讨论】:

    • 谢谢,它就像一个魅力!我必须使用项目发布属性的“应用程序文件...”按钮强制包含所有引用的 DLL,因为默认情况下不包含所有引用。
    • 出于好奇,这与直接从 \bin\Release 复制文件有何不同?
    • 我也想知道这与直接从 \bin\Release 复制文件有何不同?
    • 非常好的答案,我从 Application Files 在发布选项卡和 .application, .manifest, .config, .exe and other dlls 复制了所有列出的文件。谢谢先生在你的回答中的第二点:) ..
    • 这与仅构建项目并从 bin 文件夹(Debug 或 Release)获取文件没有任何不同。运行发布向导来创建一个未使用的安装程序只会使项目再次构建自己,与单击“构建”相同。更简短的答案是确保项目构建,然后转到项目的 bin 文件夹并将文件(或压缩它们以便于复制)复制到您要从中运行程序的位置。您仍然必须确保在用户的机器上安装了正确的 .Net 版本。它只需要与您的应用程序内置的版本相匹配。
    【解决方案2】:

    首先,您需要通过以下方式发布文件:

    1. BUILD -> PUBLISH 或右键单击解决方案资源管理器上的项目 -> 属性 -> 在解决方案资源管理器中发布或选择项目,然后按 Alt + Enter 注意:如果您使用的是Visual Studio 2013,那么在属性中您必须转到 BUILD,然后您必须禁用定义 DEBUG 常量并定义 TRACE 常量,然后您就可以开始了。

    2. 将文件保存到特定文件夹。 找到生成的文件(EXE 文件和 .config、.manifest 和 .application 文件,以及任何 DLL 文件等) - 它们都在同一个文件夹中,然后在项目文件下方的 bin\Debug 文件夹中键入(.csproj)。 在 Visual Studio 中,它们位于 Application Files 文件夹中,在其中,您只需要 .exe 和 dll 文件。 (您必须删除 ClickOnce 和其他文件,然后将此文件夹制作为 zip 文件并分发。)

    注意:ClickOnce 应用程序确实会将项目安装到系统中,但它有一个优点。您在此处不需要管理权限即可运行(如果您的应用程序遵循用于存储应用程序数据的文件夹的常规准则等)。

    【讨论】:

    • 为什么需要将 DEBUG 和 TRACE 设置为特定值?
    • 您可以为构建打开 Trace 或 Debug 条件属性,或两者都打开,或都不打开。因此,有四种构建类型:Debug、Trace、both 或两者都没有。一些用于生产部署的发布版本可能两者都不包含;大多数调试版本都包含两者。 ..................................................... ..................................msdn.microsoft.com/en-us/library/aa983575(v=vs.71).aspx ........ ..................................................... .....................msdn.microsoft.com/en-IN/library/ms164714.aspx
    • 帮助总是在stackoverflow上提供给那些要求它的人;)告诉我你不明白哪一部分?经过一番研究,我实际上通过我的方法制作了一个有效的应用程序。我正在使用 Visual Studio 2013
    • 我在 VS2015 中没有看到任何名为“Publish”的东西
    • Visual Studio 2008 和 Visual Studio 2017 的 "Build" 菜单中都有 "Publish "(可能它被留下了)在 Studio 2015 中推出?)。在任何情况下,也可以从项目属性中完成,“发布”→“立即发布”(如此处的屏幕截图所示)。
    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多