我们正试图通过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>
以下是微软对我在论坛上发布的帖子的回答。基本上他们当时支持chrome,但现在有一个适用于Chrome here的插件效果很好。
嗨包子
我在Firefox中发现了一篇关于ClickOnce的文章。
http://windowsclient.net/wpf/wpf35/wpf-deploying-clickonce-ie-firefox.aspx
.NET Framework 3.5 SP1提供了一个名为.NET Framework Assistant 1.0的组件,用于处理ClickOnce .applications。如果您已安装该组件,则FireFox中显示的对话框应包含“运行ClickOnce应用程序”按钮。当您尝试启动应用时,您是否看到了该按钮?
对于谷歌浏览器,我们没有相关经验。这是一个新的浏览器,我们缺乏测试。
此致
钱倩
论坛中的MSDN订阅者支持
如果您对我们的支持有任何反馈,请联系[email protected]如果他们提供帮助,请记得将回复标记为答案,如果他们没有提供任何帮助,请取消标记。欢迎来到
我找到了一个解决方案,我很乐意与您分享。您可以使用MageUI或Visual Studio执行此操作。我非常高兴使用ClickOnce,因为我的部署现在适用于Internet Explorer,Chrome和Firefox。
如果使用MageUI,则必须检查Include the provider URL in the Manifest
并键入Web服务器的关联URL。
如果使用Microsoft Visual Studio,则在项目属性的“发布”选项卡上单击“更新...”按钮,然后在更新位置中键入发布Web服务器的URL。
Chrome和其他浏览器可能会尝试从myapp.application的下载版本安装clickonce应用程序(没有剩余的有效负载)。如果您希望从网站进行安装,则会导致严重破坏(带有奇怪的错误消息)。为了确保按预期工作,您可以执行本答案中提到的内容,或者,如果使用Mage编写脚本,则可以使用此命令的一些变体 - dim deploymentCmd:deploymentCmd = chr(34)&mageExePath&chr(34)&“ - 新部署-Name“&chr(34)&”My Application“&chr(34):deploymentCmd = deploymentCmd&”-ProviderURL [full url] myapp.application -IncludeProviderURL true“...