我们正试图通过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>
答案 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,则必须检查Include the provider URL in the Manifest
并输入网络服务器的关联URL。
如果您使用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“ ...