【问题标题】:Online-only ClickOnce app not updating through web link仅在线 ClickOnce 应用程序未通过 Web 链接更新
【发布时间】:2016-06-15 17:14:50
【问题描述】:

我正在开发一个设置为仅在线的 ClickOnce 应用程序。我将它发布到内部 IIS 服务器,在包含此链接的同一目录中有一个 HTML 页面:

<a href="MyAppName.application"></a>

部署看起来像这样,除了HTML 页面之外的所有文件都是由我的项目的publish 目标生成的:

MyAppName
 -> Application Files
     -> MyAppName_2213_20_0_65
         -> <The published files>
 -> default.html
 -> MyAppName.application

当我点击链接时,应用程序立即运行,没有任何确认提示,我从关于框中看到它是旧版本。当我浏览到文件共享并通过在资源管理器中双击它来启动 MyAppName.application 时,我收到提示,询问我是否要运行它,然后它下载并出现错误:

无法安装此应用程序,因为已安装具有相同标识的应用程序。要安装此应用程序,请修改此应用程序的清单版本或卸载预先存在的应用程序。

作为构建过程的一部分,我将项目的InstallUrl 属性设置为http://ourserver/MyAppName/MyAppName.application。那是错的吗?它应该是包含链接的 HTML 页面吗?它如何确定产生冲突的“身份”?

由于该应用仅供在线使用,因此未安装且未显示在“程序和功能”控制面板中(因此该部分错误消息不适用)。

我是 ClickOnce 的新手,如果我遗漏了一些有用的信息,请告诉我。

更新

如果我从 Visual Studio 命令提示符运行 mage -cc,则会启动新版本而不是旧版本。

更新 2

随着我四处寻找,我发现一些看起来有问题的东西,并且可能是问题所在。我在 MyAppName.application 文件(部署清单)中看到以下两行:

...
  <assemblyIdentity name="MyAppName" version="1.0.0.0" ...
...
  <dependency>
    <dependentAssembly dependencyType="install" codebase="Application Files\MyAppName_2213_20_0_65\MyAppName.exe.manifest" size="82044">
      <assemblyIdentity name="MyAppName.exe" version="1.0.0.0" ...
...

你可以看到上面的不匹配。它正在部署到MyAppName_2213_20_0_65,但它认为exe 的版本号是1.0.0.0。我不确定它为什么这么认为。我的项目包含一个作为构建的一部分生成的文件:

[assembly: AssemblyVersion("2213.20.0.65")]

然后,要设置发布的版本号,我的 csproj 文件中有这个:

<Target Name="BeforePublish">
  <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
    <Output TaskParameter="Assemblies" ItemName="MyAppAssemblyInfo" />
  </GetAssemblyIdentity>
  <PropertyGroup>
    <ApplicationVersion>%(MyAppAssemblyInfo.Version)</ApplicationVersion>
    <InstallUrl>$(INSTALL_URL)</InstallUrl>
  </PropertyGroup>
</Target>

为我的可执行文件列出的程序集版本是否重要?如果是,为什么会卡在 1.0.0.0,会不会影响更新版本的下载?

【问题讨论】:

    标签: winforms windows-7 clickonce


    【解决方案1】:

    我的第二次更新让我走上了正轨。问题确实是assemblyIdentity 属性的版本号不正确。为了解决这个问题,我不再使用BeforePublish 目标。相反,我在调用 MSBuild 时传入了 ApplicationVersion:

    "%msbuild_path%" MyAppName.csproj /target:Publish /p:ApplicationVersion=%VERSION%
    

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多