ClickOnce应用程序错误:部署和应用程序的安全区域不匹配。

17

我在使用ClickOnce应用程序时遇到了问题,使用Firefox和Chrome浏览器不起作用,在IE浏览器中可以正常工作。异常的详细信息如下:

PLATFORM VERSION INFO
    Windows             : 6.1.7600.0 (Win32NT)
    Common Language Runtime     : 4.0.30319.239
    System.Deployment.dll       : 4.0.30319.1 (RTMRel.030319-0100)
    clr.dll             : 4.0.30319.239 (RTMGDR.030319-2300)
    dfdll.dll           : 4.0.30319.1 (RTMRel.030319-0100)
    dfshim.dll          : 4.0.31106.0 (Main.031106-0000)

SOURCES
    Deployment url          : file:///C:/Users/ibz/Downloads/MyApp.application

IDENTITIES
    Deployment Identity     : MyApp.application, Version=1.0.1.23, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil

APPLICATION SUMMARY
    * Online only application.
    * Trust url parameter is set.
ERROR SUMMARY
    Below is a summary of the errors, details of these errors are listed later in the log.
    * Activation of C:\Users\ibz\Downloads\MyApp.application resulted in exception. Following failure messages were detected:
        + Deployment and application do not have matching security zones.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
    No transaction error was detected.

WARNINGS
    * The manifest for this application does not have a signature. Signature validation will be ignored.

OPERATION PROGRESS STATUS
    * [2/10/2012 4:53:18 PM] : Activation of C:\Users\ibz\Downloads\MyApp.application has started.
    * [2/10/2012 4:53:18 PM] : Processing of deployment manifest has successfully completed.
    * [2/10/2012 4:53:18 PM] : Installation of the application has started.

ERROR DETAILS
    Following errors were detected during this operation.
    * [2/10/2012 4:53:18 PM] System.Deployment.Application.InvalidDeploymentException (Zone)
        - Deployment and application do not have matching security zones.
        - Source: System.Deployment
        - Stack trace:
            at System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
            at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
            at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
            at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
            at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

COMPONENT STORE TRANSACTION DETAILS
    No transaction information is available.
请帮我解决这个问题。

你尝试过调整ClickOnce安全设置吗? - Zenexer
这可能不会解决问题,但你应该签署ClickOnce清单。 - Zenexer
http://windowsclient.net/wpf/wpf35/wpf-deploying-clickonce-ie-firefox.aspx - Aristos
@Zenexer 我已经尝试过了,问题仍然存在。 - Bindas
您可以尝试清理注册表和AppData 2.0文件夹(或尝试使用清洁机器)。还可以尝试设置“在线和离线”可访问性。 - Ivan Leonenko
显示剩余3条评论
7个回答

7

下载文件会破坏相对链接

问题在于错误信息应该是ExampleAppName.exe.manifest找不到

如果打开已下载的ExampleAppName.application文件,您会发现它可能指向一个路径,例如Application Files\ExampleAppName.exe.manifest,而该文件在本地不存在。

它仍然在IE中工作,因为IE启动安装程序时没有下载该文件。然后,清单文件实际上存在于与Internet上的ExampleAppName.application文件所在位置的相对路径中。

手动转换为绝对链接

解决方法是更改ExampleAppName.application文件,并为其提供指向Internet上AppName.exe.manifest存在的绝对路径。


3
只使用IE或Edge浏览器,不要用Chrome(无需额外操作)和Firefox。 - wruckie
感谢@wruckie的帮助,使用Edge解决了我的问题。 - jacob spitzer

2
你需要安装Chrome的ClickOnce扩展并启用它。这样,你就可以在不点击下载应用程序的情况下立即运行应用程序。

2

配置Visual Studio以包含更新位置

这适用于至少VS2008项目:

属性 -> 发布 -> 更新 -> 将更新位置设置为 http://www.example.com/ApplicationName/

这将在您的.application文件的<deployment>部分中添加一个<deploymentProvider codebase=... />子部分。至少Chrome接受此操作。


澄清一下,这可能是由于Chrome和其他浏览器启动OneClick应用程序的方式而导致的误导性错误之一。可以通过在myapp.application中包含ProviderURL和IncludeProviderURL的值来防止此问题。当我使用发布脚本而不是MageUI或VS时,请尝试不要意外注释掉下面相关的行(!)dim depCmd:depCmd = chr(34) & mageExePath & chr(34) &“-New Deployment -Name”& chr(34) &“My Application”& chr(34) depCmd = depCmd &“-ProviderURL [full url]myapp.application -IncludeProviderURL true” depCmd = depCmd &等等... - saminpa

1
如果您收到以上错误,则说明它认为您没有签署清单。请确保在签名选项卡中选中复选框,并选择有效的证书。此外,您是以完全信任还是部分信任发布的?如果是部分信任,请更改为完全信任,特别是在进行互联网安装时。

0
在Visual Studio 2013中,我已经验证了这个错误是由于在项目的发布选项中勾选了“排除部署提供程序URL”引起的。
Project Properties > Publish > Options > Manifests > Un-tick "Exclude deployment provider URL"

作为额外的预防措施,请确保提供您的根URL,以便应用程序更新/安装可以正常进行:
Project Properties > Publish > Updates > Update Location (Provide the root URL where this application will be found)

0

我通过注释掉app.manifest文件中application标签的内容来解决了这个问题。


    <application>
      <!-- A list of all Windows versions that this application is designed to work with. 
      Windows will automatically select the most compatible environment.-->

      <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->

      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->

      <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->

      <!--The ID below indicates application support for Windows 8.1 -->
      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>-->
      
      <!--The ID below indicates application support for Windows 10 -->
      <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>-->

    </application>

注意:如果 ClickOnce 已签名,则只删除 Vista 的部分即可,否则请删除整个部分。您还可以尝试在首次签署 ClickOnce。

希望这能帮到你!


0

以上的解决方案都对我无效。

点击“自动设置时间”并同步时间,这对我有用。

我这样做的原因是因为我的电脑上是2021年2月8日,而客户的电脑上是2021年8月2日。所以我认为这可能有关系,而且它确实解决了问题。


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