【问题标题】:C# Deploying my application - clickonce from web onlyC# 部署我的应用程序 - 仅从网络单击一次
【发布时间】:2011-03-25 09:48:23
【问题描述】:

所以我用 C# 开发了我的应用程序。我准备部署它。我想让它让用户始终从我的网站启动它(以便他们始终获得更新,无需安装等)。

ClickOnce 是执行此操作的正确方法吗?

我尝试将 ClickOnce 部署到我的服务器,但我突然发现了一些问题:

1) 用户可以选择运行安装程序或启动 .application 文件 - 有什么区别?它不能自己检测到这一点吗?

2) 当我尝试“启动” .application 时,它要求将其下载到我的计算机上。无论如何直接从浏览器启动文件?

3) 下载并运行 .application 文件后,我收到一条错误消息,并显示以下消息:“部署和应用程序没有匹配的安全区域。”

【问题讨论】:

    标签: c# deployment clickonce


    【解决方案1】:

    是的,ClickOnce 非常适合您的需求。

    1. setup.exe 或称为“引导程序”用于安装 .NET Framework 和 Microsoft Installer 等先决条件,因为它是包含 ClickOnce 运行时所需的 .NET 框架安装您的应用程序。引导程序只需要在没有这些先决条件的计算机上使用一次,之后只有称为“部署清单”的 .application 文件用于更新。当您使用 ClickOnce 发布时,会创建一个 Publish.htm 文件,其中包含一些 JavaScript 代码,用于检测用户是否安装了先决条件。如果用户没有,它会显示一个链接到setup.exe 的按钮,否则它会显示一个直接链接到.application 文件的按钮。您可以使用该页面(或基于它创建一个)为您的用户提供尽可能短的安装体验。

    2. 客户端计算机上没有安装 .NET Framework(在这种情况下,请使用引导程序),或者您的 Web 服务器配置不正确,因此未将 .application 扩展名与 MIME 关联application/x-ms-application 的类型。创建该关联以解决问题。我还建议在部署清单上添加一些 http 标头来禁用缓存,否则用户的浏览器可以缓存它,并可能导致用户丢失更新。

    3. 对于发布到 Web 位置的 ClickOnce 安装,您无法在本地下载和运行部署清单文件,因为 ClickOnce 为本地安装(例如从本地计算机或网络共享)提供了更高的信任级别,但应用程序清单指向 Web 上的安装源,该安装源的信任级别较低,因此失败。一旦你解决了问题 2,这个问题也将得到解决。

    【讨论】:

    • 优秀的答案。还有几个问题:1)我应该将用户链接到设置文件还是 .application 文件? 2) 它在 IE 中正确启动,但在 Firefox 中无法启动。在 Firefox 中,它要求下载文件。这是 MIME 类型配置问题吗?关于这方面的任何提示(Linux/Apache 服务器)
    • @whydna:谢谢! 1.我编辑了关于Publish.htm的答案,2.从Firefox安装ClickOnce应用程序需要一个插件,例如带有.NET Framework 3.5 SP1one provided by Microsoft,或者第三方插件,如FFClickOnce
    • 那么对于 Firefox/Chrome/任何其他浏览器,我有哪些选择?此外,它似乎没有检测到用户是否运行了您在帖子中提到的设置。它只是显示 2 个链接并要求用户弄清楚。例如:kirupafx.com/clickonce/publish.htm
    • 基本上,引导程序用于除 IE 之外的所有浏览器,因为它知道如何正确调用 ClickOnce。这也反映在Publish.htm 文件中——如果浏览器不是 IE 或 Firefox,它将直接链接到引导程序。您可能需要更改它,以便即使它检测到 Firefox 也能链接到引导程序,因为大多数人的机器上都没有安装该插件。至于你的Publish.htm,这很奇怪,因为我只看到一个带有 IE8 的按钮。同样,您甚至可能不想依赖 Publish.htm 并始终链接到引导程序。
    • 如果用户没有安装先决条件,引导程序将自动下载并安装它们(这就是它的用途)。如果它们已经安装,它将把控制权交给 ClickOnce 安装程序。请记住,安装先决条件需要管理员权限(如果 UAC 已打开,它将提示您),而安装 ClickOnce 应用程序则不需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多