C#部署我的应用程序-仅从web单击一次

C#部署我的应用程序-仅从web单击一次,c#,deployment,clickonce,C#,Deployment,Clickonce,因此,我在C#中开发了我的应用程序。我已经准备好部署它了。我想让用户总是从我的网站上启动它(这样他们总是得到更新,不安装,等等) ClickOnce是正确的方法吗 我尝试将ClickOnce部署到我的服务器,但有几件事突然发生了: 1) 用户可以选择运行安装程序或启动.application文件-有什么区别?它自己就不能检测到吗 2) 当我尝试“启动”应用程序时,它会要求将其下载到我的计算机上。不管怎样,直接从浏览器启动文件 3) 下载并运行.application文件后,我收到一条错误消息:“

因此,我在C#中开发了我的应用程序。我已经准备好部署它了。我想让用户总是从我的网站上启动它(这样他们总是得到更新,不安装,等等)

ClickOnce是正确的方法吗

我尝试将ClickOnce部署到我的服务器,但有几件事突然发生了:

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

2) 当我尝试“启动”应用程序时,它会要求将其下载到我的计算机上。不管怎样,直接从浏览器启动文件


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

是的,ClickOnce非常适合您的需要

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

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

  • 对于发布到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 SP1的插件,或第三方插件,如。那么,我对Firefox/Chrome/其他浏览器有哪些选择?此外,它似乎没有检测到用户是否已经按照您在文章中提到的那样运行了安装程序。它只显示2个链接,并要求用户找出它。基本上,bootstrapper用于除IE以外的所有浏览器,因为它知道如何正确调用ClickOnce。这也反映在
    Publish.htm
    文件中-如果浏览器不是IE或Firefox,它将直接链接到引导程序。您可能希望对其进行更改,这样即使它检测到Firefox,它也会链接到引导程序,因为大多数人的机器上都没有安装该插件。至于你的
    Publish.htm
    ,这很奇怪,因为我只看到一个带有IE8的按钮。同样,您可能甚至不想依赖于
    Publish.htm
    并始终链接到引导程序。如果用户没有安装必备软件,引导程序将自动下载并安装它们(这就是它的用途)。如果它们已经安装,它将把控制权移交给ClickOnce安装程序。请记住,安装先决条件需要管理员权限(如果UAC打开,它将提示管理员权限),而安装ClickOnce应用程序则不需要管理员权限。