指定 ClickOnce 发布属性

可以在项目设计器的“发布”页上或使用发布向导配置 ClickOnce 发布属性。 在本文中,你将了解如何指定属性,例如发布位置、安装 URL、联机或脱机安装模式以及发布版本。

注意

在适用于 .NET Core 3.1 和 .NET 5(或更高版本)的 ClickOnce 中,需要使用“发布”工具(而不是“发布”向导和项目设计器的“发布”页)来设置部署属性。 有关详细信息,请参阅使用 ClickOnce 部署 .NET Windows 应用程序ClickOnce for .NET

指定发布位置

使用 ClickOnce 发布应用程序时,“Publish Location”属性指定放置应用程序文件和清单的位置。 这可以是文件路径或 FTP 服务器的路径。

可以在“项目设计器”的“发布”页上或使用发布向导指定 Publish Location 属性。 有关详细信息,请参阅如何:使用发布向导发布 ClickOnce 应用程序

注意

当使用 ClickOnce 安装多个版本的应用程序时,安装会将应用程序的早期版本移动到位于你指定的发布位置的名为“Archive”的文件夹中。 按照这种方式对早期版本进行存档,可以使安装目录与早期版本所在的文件夹分开。

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 在“发布位置”字段中,使用以下格式之一输入发布位置

    • 若要发布到文件共享或磁盘路径,请使用 UNC 路径 (\\Server\ApplicationName) 或文件路径 (C:\Deploy\ApplicationName) 输入路径。

    • 若要发布到 FTP 服务器,请使用格式 ftp://ftp.microsoft.com/<ApplicationName> 输入路径。

      请注意,“发布位置”框中必须存在文本才能使浏览(“...”)按钮正常工作 。

指定最终用户从中进行安装的位置

在发布 ClickOnce 应用程序时,用户下载和安装应用程序的位置不一定是你最初发布应用程序的位置。 例如,在某些组织中,开发人员可能会将应用程序发布到暂存服务器,然后管理员会将该应用程序移动到 Web 服务器。

在这种情况下,可以使用 Installation URL 属性来指定用户下载应用程序时将使用的 Web 服务器。 这是必需的,以便应用程序清单知道在何处查找更新。

可以在“项目设计器”的“发布”页上设置 Installation URL 属性 。

备注

也可以使用 PublishWizard 设置 Installation URL 属性。 有关详细信息,请参阅如何:使用发布向导发布 ClickOnce 应用程序

指定安装 URL

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 在“安装 URL”字段中,使用 https://www.contoso.com/ApplicationName 格式的完全限定 URL 或 \Server\ApplicationName 格式的 UNC 路径输入安装位置。

指定 ClickOnce 脱机或联机安装模式

ClickOnce 应用程序的 Install Mode 确定应用程序是可供脱机使用还是联机使用。 选择“应用程序仅可联机使用”时,用户必须有权访问 ClickOnce 发布位置(网页或文件共享)才能运行该应用程序。 选择“应用程序也可脱机使用”时,应用程序会将条目添加到“开始”菜单和“添加或删除程序”对话框;用户能够在未连接时运行应用程序。

可以在“项目设计器”的“发布”页上设置 Install Mode

备注

还可通过使用发布向导来设置 Install Mode。 有关详细信息,请参阅操作说明:使用发布向导发布 ClickOnce 应用程序

使 ClickOnce 应用程序仅可联机使用

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 在“安装模式和设置”区域中,单击“应用程序仅可联机使用”选项按钮。

使 ClickOnce 应用程序可供联机或脱机使用

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 在“安装模式和设置”区域中,单击“应用程序也可脱机使用”选项按钮。

    安装后,应用程序会将条目添加到“开始”菜单和控制面板中的“添加或删除程序”。

设置 ClickOnce 发布版本

ClickOnce Publish Version 属性决定是否将要发布的应用程序视为更新。 每次版本递增时,应用程序都将作为更新发布。

可以在“项目设计器”的“发布”页上设置 Publish Version 属性 。

注意

有一个项目选项会在每次发布应用程序时自动递增 Publish Version 属性;默认情况下启用此选项。 有关详细信息,请参阅自动递增 ClickOnce 发布版本

更改发布版本

  1. 在“解决方案资源管理器” 中选择一个项目,然后在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 在“发布版本”字段中,递增“主版本号”、“次版本号”、“内部版本号”或“修订”版本号 。

    注意

    切勿递减版本号;这样做可能会导致不可预知的更新行为。

自动递增 ClickOnce 发布版本

发布 ClickOnce 应用程序时,更改 Publish Version 属性将导致应用程序作为更新发布。 默认情况下,Visual Studio 会在每次发布应用程序时自动递增 Publish VersionRevision 版本号。

可以在“项目设计器”的“发布”页上禁止该行为 。

注意

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于你现用的设置或版本。 若要更改设置,请在 “工具” 菜单上选择 “导入和导出设置” 。 有关详细信息,请参阅重置设置

禁用发布版本的自动递增

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 在“发布版本”部分中,清空“自动递增每个版本的修订号”复选框 。

指定 ClickOnce 应用程序的发布页

发布 ClickOnce 应用程序时,会生成一个默认网页 (publish.htm) 并随应用程序一起发布。 此页面包含应用程序的名称、指向安装应用程序和/或任何先决条件的链接以及指向介绍 ClickOnce 的帮助主题的链接。 项目的“发布页”属性可为 ClickOnce 应用程序指定网页名称。

一旦指定了发布页面,下次发布时,该页将被复制到发布位置;如果再次发布,该页将不会被覆盖。 如果要自定义页面的外观,可以这样做,而不必担心会丢失所做的更改。 有关详细信息,请参阅自定义 ClickOnce 默认网页

可在“项目设计器”的“发布”窗格中的“发布选项”对话框中设置“发布页”属性 。

若要为 ClickOnce 应用程序指定自定义网页,请执行以下操作:

  1. 在“解决方案资源管理器” 中选择一个项目,然后在“项目” 菜单上单击“属性” 。

  2. 选择“发布”窗格。

  3. 单击“选项”按钮以打开“发布选项”对话框 。

  4. 单击“部署”。

  5. 在“发布选项”对话框中,确保选中了“发布后打开部署网页”复选框(默认情况下应选中) 。

  6. 在“部署网页”框中,输入网页的名称,然后单击“确定” 。

若要防止每次发布时都启动发布页,请执行以下操作:

  1. 在“解决方案资源管理器” 中选择一个项目,然后在“项目” 菜单上单击“属性” 。

  2. 选择“发布”窗格。

  3. 单击“选项”按钮以打开“发布选项”对话框 。

  4. 单击“部署”。

  5. 在“发布选项”对话框中,清除“发布后打开部署网页”复选框 。

自定义 ClickOnce 应用程序的默认网页

将 ClickOnce 应用程序发布到 Web 时,会自动生成一个网页并随应用程序一起发布。 默认页面包含应用程序的名称,以及指向安装应用程序、安装必备组件或访问 MSDN 上的帮助的链接。

注意

你在该页面上看到的实际链接取决于查看该页的计算机以及所包含的先决条件。

网页的默认名称为“Publish.htm”;你可以在“项目设计器”中更改该名称。 有关详细信息,请参阅指定 ClickOnce 应用程序的发布页

只有在检测到较新版本时,才会发布 Publish.htm 网页。

注意

对“发布”设置所做的更改不会影响 Publish.htm 页,但有一种情况例外:如果在最初发布后添加或删除先决条件,则先决条件的列表将不再是准确的。 需要编辑先决条件链接的文本以反映所做的更改。

若要自定义发布网页,请执行以下操作:

  1. 将 ClickOnce 应用程序发布到一个 Web 位置。 有关详细信息,请参阅如何:使用发布向导发布 ClickOnce 应用程序

  2. 在 Web 服务器上,在 Visual Web 设计器或其他 HTML 编辑器中打开“Publish.htm”文件。

  3. 根据需要自定义页面并将其保存。

  4. 可选。 若要防止 Visual Studio 覆盖自定义发布网页,请取消选中“发布选项”对话框中的“每次发布后自动生成部署网页”。

发布 ClickOnce 应用程序时,“支持 URL”属性会确定一个网页或文件共享,用户可转到此内容来获取应用程序的相关信息。 此属性是可选的;如果提供了,该 URL 将显示在应用程序的条目“添加或删除程序”对话框中。

可以在“项目设计器”的“发布”页上设置“支持 URL”属性 。

若要指定支持 URL,请执行以下操作:

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 单击“选项”按钮以打开“发布选项”对话框 。

  4. 单击“说明”。

  5. 在“支持 URL”字段中,输入网站、网页或 UNC 共享的完全限定的路径。

为 ClickOnce 部署中的各个系统必备指定支持 URL

ClickOnce 部署可以测试许多必备组件,这些必备组件必须在客户端计算机上提供,这样 ClickOnce 应用程序才能运行。 这些依赖项包括所需的最低版本 .NET Framework、操作系统版本,以及必须预安装在全局程序集缓存 (GAC) 中的程序集。 但是,ClickOnce 无法自行安装所有这些必备组件;如果找不到必备组件,只会停止安装并显示一个对话框,说明安装失败的原因。

有两种方法可用于安装必备组件。 可以使用引导程序应用安装它们。 或者,可以指定单个必备组件的支持 URL,如果找不到必备组件,将会在对话框中向用户显示。 该 URL 引用的页面可以包含指向安装所需必备组件的说明的链接。 如果应用程序未指定单个必备组件的支持 URL,则 ClickOnce 显示在部署清单中为整个应用程序指定的支持 URL(如果已定义)。

虽然 Visual Studio、Mage.exe 和 MageUI.exe 都可用于生成 ClickOnce 部署,但这些工具都不直接支持为各个必备组件指定支持 URL。 本文档介绍如何修改部署的应用程序清单和部署清单,以包含这些支持 URL。

注意

在适用于 .NET Core 3.1 和 .NET 5(或更高版本)的 ClickOnce 中,需要使用“发布”工具(而不是“发布”向导和项目设计器的“发布”页)来设置部署属性。 有关详细信息,请参阅使用 ClickOnce 部署 .NET Windows 应用程序ClickOnce for .NET

为各个必备组件指定一个支持 URL

  1. 在文本编辑器中打开 ClickOnce 应用程序的应用程序清单(.manifest 文件)。

  2. 对于操作系统必备组件,将 supportUrl 属性添加到 dependentOS 元素:

     <dependency>
        <dependentOS supportUrl="http://www.adatum.com/MyApplication/wrongOSFound.htm">
          <osVersionInfo>
            <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" servicePackMinor="0" />
          </osVersionInfo>
        </dependentOS>
      </dependency>
    
  3. 对于特定版本公共语言运行时的必备组件,将 supportUrl 属性添加到指定公共语言运行时依赖项的 dependentAssembly 条目:

      <dependency>
        <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true" supportUrl=" http://www.adatum.com/MyApplication/wrongClrVersionFound.htm">
          <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="4.0.30319.0" />
        </dependentAssembly>
      </dependency>
    
  4. 对于必须预安装在全局程序集缓存中的程序集必备组件,请为指定所需程序集的 dependentAssembly 元素设置 supportUrl

      <dependency>
        <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true" supportUrl=" http://www.adatum.com/MyApplication/missingSampleGACAssembly.htm">
          <assemblyIdentity name="SampleGACAssembly" version="5.0.0.0" publicKeyToken="04529dfb5da245c5" processorArchitecture="msil" language="neutral" />
        </dependentAssembly>
      </dependency>
    
  5. 可选。 对于面向 .NET Framework 4 的应用程序,在文本编辑器中打开 ClickOnce 应用程序的部署清单(.application 文件)。

  6. 对于 .NET Framework 4 必备组件,将 supportUrl 属性添加到 compatibleFrameworks 元素:

    <compatibleFrameworks  xmlns="urn:schemas-microsoft-com:clickonce.v2" supportUrl="http://adatum.com/MyApplication/CompatibleFrameworks.htm">
      <framework targetVersion="4.0" profile="Client" supportedRuntime="4.0.30319" />
      <framework targetVersion="4.0" profile="Full" supportedRuntime="4.0.30319" />
    </compatibleFrameworks>
    
  7. 手动更改应用程序清单后,必须使用数字证书对应用程序清单重新签名,然后更新部署清单并重新签名。 使用 Mage.exe 或 MageUI.exe SDK 工具来完成此任务,因为使用 Visual Studio 重新生成这些文件会清除手动更改。 有关使用 Mage.exe 清单进行重新签名的详细信息,请参阅如何:为应用程序和部署清单重新签名

.NET Framework 安全性

如果将应用程序标记为以部分信任方式运行,则支持 URL 不会显示在对话框中。

更改 ClickOnce 应用程序的发布语言

在发布 ClickOnce 应用程序时,安装过程中显示的用户界面默认使用开发计算机的语言和区域性。 如果要发布本地化的应用程序,则需要指定与本地化版本匹配的语言和区域性。 这是由项目的 Publish language 属性决定的。

可在“项目设计器”的“发布”窗格中的“发布选项”对话框中设置 Publish language 属性 。

注意

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于你现用的设置或版本。 若要更改设置,请在 “工具” 菜单上选择 “导入和导出设置” 。 有关详细信息,请参阅重置设置

若要更改发布语言,请执行以下操作:

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

    注意

    在适用于 .NET Core 3.1 和 .NET 5(或更高版本)的 ClickOnce 中,需要使用“发布”工具(而不是“发布”向导和项目设计器的“发布”页)来设置部署属性。 有关详细信息,请参阅使用 ClickOnce 部署 .NET Windows 应用程序适用于 .NET 的 ClickOnce

  3. 单击“选项”按钮以打开“发布选项”对话框 。

  4. 单击“说明”。

  5. 在“发布选项”对话框中,从“发布语言”下拉列表中选择语言和区域性,然后单击“确定” 。

指定 ClickOnce 应用程序的“开始”菜单名称

安装可供联机和脱机使用的 ClickOnce 应用程序时,将在“开始”菜单和“添加或删除程序”列表中添加一个条目。 默认情况下,显示名称与应用程序程序集的名称相同,但可以通过在“发布选项”对话框中设置“产品名称”来更改显示名称 。

“产品名称”将显示在 publish.htm 页面上;对于已安装的脱机应用程序,它是“开始”菜单中条目的名称,也是“添加或删除程序”中显示的名称 。

“发布者名称”将出现在“产品名称”上方的 publish.htm 页面上,对于已安装的脱机应用程序,它也是包含“开始”菜单中应用程序图标的文件夹名称 。

在 %appdata%\Microsoft\Windows\Start Menu\Programs\<发布者名称> 中创建了“开始”菜单快捷方式或应用引用。 快捷方式或应用引用与产品名称同名。

可在“项目设计器”的“发布”页上的“发布选项”对话框中设置“产品名称”和“发布者名称”属性 。

若要指定“开始”菜单名称,请执行以下操作:

  1. 在“解决方案资源管理器” 中选择了项目的情况下,在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 单击“选项”按钮以打开“发布选项”对话框 。

  4. 单击“说明”。

  5. 在“发布选项”对话框中,输入要在“产品名称”中显示的名称 。

  6. 也可在“发布者名称”中输入发布者名称。

启用 CD 安装自动启动

通过可移动媒体(如 CD-ROM 或 DVD-ROM)部署 ClickOnce 应用程序时,可启用 AutoStart,以便在插入媒体时自动启动 ClickOnce 应用程序。

可在“项目设计器”的“发布”页上启用 AutoStart

若要启用 AutoStart,请执行以下操作:

  1. 在“解决方案资源管理器” 中选择一个项目,然后在“项目” 菜单上单击“属性” 。

  2. 单击“发布”选项卡。

  3. 单击“选项” 按钮。

    这时会显示一个“发布选项”对话框。

  4. 单击“部署”。

  5. 选中“对于 CD 安装,插入 CD 时将自动启动安装程序”复选框。

    发布应用程序时,Autorun.inf 文件将被复制到发布位置。