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

时间:2010-05-10 20:41:09

标签: msbuild clickonce

我们正试图通过MSBuild发布ClickOnce应用程序。我们已经使它适用于已安装的Windows应用程序版本。

但是,当我们将install设置为false,以便它只是从Web运行应用程序时,当我们尝试从URL运行应用程序时,会出现以下错误:“部署和应用程序没有匹配的安全区域”这在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 个答案:

答案 0 :(得分:17)

以下是微软对我在论坛上发布的帖子的回答。基本上他们当时支持chrome,但现在有一个适用于Chrome here的插件效果很好。

  

你好fbanderson,

     

我在Firefox中发现了一篇关于ClickOnce的文章。

     

http://windowsclient.net/wpf/wpf35/wpf-deploying-clickonce-ie-firefox.aspx

     

.NET Framework 3.5 SP1提供了一个名为.NET Framework的组件   处理ClickOnce。应用程序的助手1.0。如果你有   安装该组件后,FireFox中的对话框应该显示给你   包含“运行ClickOnce应用程序”按钮。你看到那个按钮吗?   当你试图启动应用程序时?

     

对于谷歌浏览器,我们没有相关经验。这是一个新的   浏览器,我们缺乏测试。

     

此致

     

Kira Qian

     

论坛中的MSDN订阅者支持

     

如果您对我们的支持有任何反馈,请联系   msdnmg@microsoft.com请记得将回复标记为答案   如果他们没有提供任何帮助,他们会帮助和取消标记。欢迎来到

答案 1 :(得分:7)

我找到了一个解决方案,我很乐意与您分享。您可以使用MageUI或Visual Studio执行此操作。我非常高兴使用ClickOnce,因为我的部署现在适用于Internet Explorer,Chrome和Firefox。

MageUI

如果您使用MageUI,则必须检查Include the provider URL in the Manifest并输入网络服务器的关联URL。

Visual Studio

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

答案 2 :(得分:0)

Chrome浏览器和其他浏览器可能会尝试从myapp.application的下载版本中安装clickonce应用程序(没有剩余的有效负载)。如果您希望通过网站进行安装,则会造成严重破坏(带有奇怪的错误消息)。为确保此操作按预期工作,您可以执行此答案中提到的操作,或者,如果使用Mage编写脚本,则可以使用此命令的某些变体-dim DeploymentCmd:deploymentCmd = chr(34)&mageExePath&chr(34)&“ -New Deployment -名称“&chr(34)&”我的应用程序“&chr(34):deploymentCmd = deploymentCmd&” -ProviderURL [full url] myapp.application -IncludeProviderURL true“ ...