MSBuild ClickOnce错误:"部署和应用程序没有匹配的安全区域"

13
我们正在尝试通过MSBuild发布ClickOnce应用程序。对于已安装的Windows应用程序版本,它可以正常工作。
然而,当我们将安装设置为false时,以便仅从Web运行应用程序时,我们在尝试从URL运行应用程序时会收到以下错误消息:"Deployment and application do not have matching security zones"。这在Internet Explorer中可以正常工作。我们只在Chrome和FireFox中收到错误消息。
以下是项目文件设置的示例。
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
  <PropertyGroup>
    <SrcTreeRoot>$(MSBuildProjectDirectory)\..\..\..</SrcTreeRoot>
    <!--ClickOnceDeployFolder>$(WebOutputDir)\AnalyzerPC</ClickOnceDeployFolder-->
    <ProjectGuid>{8205E593-F400-41AE-8D6F-DEA290B2DCF9}</ProjectGuid>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ApplicationIcon>Graphics\EDA Icon.ico</ApplicationIcon>
    <AssemblyName>DASHQueryBuilder</AssemblyName>
    <OutputType>WinExe</OutputType>
    <RootNamespace>TetraData.Analyzer</RootNamespace>
    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <OldToolsVersion>2.0</OldToolsVersion>
    <IsWebBootstrapper>false</IsWebBootstrapper>
    <ManifestCertificateThumbprint>...</ManifestCertificateThumbprint>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>true</SignManifests>
    <SignAssembly>true</SignAssembly>
    <ManifestKeyFile>$(BuildDir)\Certificates\TetraDataCode.pfx</ManifestKeyFile>
    <ProductVersion>9.0.21022</ProductVersion>
    <PublishUrl>http://localhost/DASHQueryBuilder/</PublishUrl>
    <Install>false</Install>
    <!--InstallFrom>Web</InstallFrom-->
    <UpdateEnabled>false</UpdateEnabled>
    <MapFileExtensions>true</MapFileExtensions>
    <PublisherName>Follett Software Company</PublisherName>
    <TrustUrlParameters>true</TrustUrlParameters>
    <ApplicationRevision>0</ApplicationRevision>
    <UseApplicationTrust>false</UseApplicationTrust>
    <PublishWizardCompleted>true</PublishWizardCompleted>
    <BootstrapperEnabled>false</BootstrapperEnabled>
  </PropertyGroup>
  <Import Project="$(SrcTreeRoot)\Build\TaskInit.Tasks" />
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(SrcTreeRoot)\Build\TaskOverrides.Tasks" />
  <Import Project="$(MSBuildProjectDirectory)\Analyzer.csproj" />
  <PropertyGroup>
    <PublishDir>$(WebOutputDir)\DASH Query Builder\</PublishDir>
    <ApplicationVersion>$(MajorMinorVersion).0.0</ApplicationVersion>
  </PropertyGroup>
  <Target Name="BeforeResolveReferences">
    <Copy SourceFiles="$(MSBuildProjectDirectory)\DASHQueryBuilder.config" DestinationFiles="$(MSBuildProjectDirectory)\app.config" />
  </Target>
</Project>
3个回答

17
下面是微软对我在他们论坛上发布的主题的回答。基本上,他们曾经支持Chrome浏览器,但现在有一个插件适用于Chrome浏览器,效果非常好。
你好,fbanderson, 我找到了一篇关于Firefox中ClickOnce的文章。 .NET Framework 3.5 SP1提供了一个名为.NET Framework Assistant 1.0的组件,它处理ClickOnce应用程序。如果您安装了该组件,则在FireFox中尝试启动应用程序时,对话框将显示“运行ClickOnce应用程序”按钮。您是否看到了这个按钮? 至于Google Chrome,我们没有相关经验。它是一个新的浏览器,我们缺乏在上面的测试。 此致 敬礼, Kira Qian MSDN论坛中的订阅支持 如果您对我们的支持有任何反馈,请联系msdnmg@microsoft.com。如果帮助到您,请记得将回复标记为答案;如果没有帮助到您,请取消标记。欢迎来到

我在VS2013上仍然遇到这个错误...这些家伙从来没有学过。简直不敢相信VSTO有多么多的漏洞!!!!!!1 - Christo S. Christov
1
答案中的链接已经失效。但是您可以在网上商店搜索“clickonce”,并找到许多选项:https://chrome.google.com/webstore/search/clickonce 我使用了Meta4 ClickOnce Launcher,它运行良好。 - Rossco

7
我找到了一个解决方案,很高兴与您分享。您可以使用 MageUI或者Visual Studio完成此操作。现在我非常喜欢使用ClickOnce作为我的部署方式,因为它可以在Internet Explorer、Chrome和Firefox中工作。

使用MageUI

如果您使用MageUI,则必须勾选“在清单中包含提供程序URL”并输入Web服务器的相关URL。

使用Visual Studio

如果您使用Microsoft Visual Studio,则在项目属性的“发布”选项卡中,单击“更新...”按钮,然后在更新位置中输入发布Web服务器的URL。


0

Chrome和其他浏览器可能会尝试从下载的myapp.application版本(而不是其余有效负载)安装ClickOnce应用程序。如果您希望从网站进行安装,则会造成混乱(出现奇怪的错误消息)。为确保此操作按预期工作,您可以执行本答案中提到的操作,或者如果使用Mage脚本,则可以执行此命令的某个变体 - dim deploymentCmd:deploymentCmd = chr(34)& mageExePath & chr(34)&“-New Deployment -Name”& chr(34)&“My Application”& chr(34):deploymentCmd = deploymentCmd&“-ProviderURL [full url]myapp.application -IncludeProviderURL true”...


这是一次失败的尝试,通过向帮助我部分地添加了一些清晰度的两个答案添加类似的评论,但这个评论被编辑为一个单独的答案。Backouche的答案基本上是正确的(因此有7个赞),但它没有涵盖cmdline Mage版本或包括关于为什么它可能实际适用的详细信息... - saminpa

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