演练:手动部署 ClickOnce 应用程序

更新:2007 年 11 月

本演练描述使用命令行或图形界面版本的清单生成和编辑工具 (Mage) 创建完整 ClickOnce 部署所需要的步骤。

如果您不经常使用 Visual Studio,但需要自动执行部署过程,或者需要使用高级部署功能(如受信任的应用程序部署),则应使用 Mage.exe 命令行工具来创建 ClickOnce 清单。下面的演练将引导您完成使用清单生成和编辑工具的命令行版本 (Mage.exe) 或 Windows 窗体版本 (MageUI.exe),来生成完整 ClickOnce 部署所需要的全部步骤。

先决条件

本演练假设您有一个已准备好要部署的 Windows 窗体应用程序;此应用程序将被称为 WindowsFormsApp1。还必须安装 Windows 软件开发工具包 (SDK)。

在生成部署之前,需要考虑许多问题。首先是确定如何分发部署:通过 Web、从文件共享还是从 CD 安装。有关更多信息,请参见 ClickOnce 部署概述

接下来,需要确定应用程序是否以提升的信任级别运行。正如受信任的应用程序部署概述中所讨论的那样,默认情况下,ClickOnce 应用程序将运行在部分受信任的区域中,其确切的权限取决于它们是承载在 Intranet 上还是承载在 Internet 上。如果应用程序需要访问客户端计算机上的数据,与本地设备通信,调用 Windows API 函数,或执行其他具有潜在危险的操作,则需要断言更高的信任级别。如果应用程序需要完全信任(例如,用户系统的完全访问权限),可以使用 Mage.exe 轻松地进行此设置。如果要为应用程序定义自定义的权限集,可以使用文本编辑器或 MageUI.exe 从其他清单复制 Internet 或 Intranet 权限部分,根据需要对其进行修改,然后将其添加到应用程序清单中。

在 ClickOnce 清单中,断言更高信任级别的两种方法是“权限提升”和“受信任的应用程序部署”。在这两种情况下,必须使用 Authenticode 证书对部署进行签名,Authenticode 证书可通过 MakeCert.exe 工具生成或从证书颁发机构 (CA) 获取。如果选择使用“受信任的应用程序部署”,还必须将证书一次性安装到所有客户端计算机上。有关更多信息,请参见受信任的应用程序部署概述

使用 Mage.exe 命令行工具部署应用程序

  1. 打开一个 Windows SDK 命令提示,并转到将要在其中存储 ClickOnce 文件的目录。

  2. 创建一个目录,该目录以部署的当前版本命名。如果是首次部署应用程序,则可以选择 1.0.0.0。

    xc3tc5xx.alert_note(zh-cn,VS.90).gif说明:

    部署的版本可能与应用程序文件的版本不同。

  3. 创建该文件夹的名为“bin”的子目录,将所有应用程序文件(包括可执行文件、程序集、资源和数据文件)全部放置在该目录中。

  4. 通过调用 Mage.exe 生成应用程序清单:

    mage -New Application -ToFile 1.0.0.0\WindowsFormsApp1.exe.manifest -Name "Windows Forms App 1" -Version 1.0.0.0 -FromDirectory 1.0.0.0\bin
    
  5. 使用数字证书对应用程序清单进行签名:

    mage -Sign WindowsFormsApp1.exe.manifest -CertFile mycert.pfx
    
  6. 通过调用 Mage.exe 生成部署清单。默认情况下,Mage.exe 会将 ClickOnce 部署标记为已安装的应用程序,以便它既可以联机运行又可以脱机运行。若要使应用程序只在用户联机时可用,请使用值为 f 的 -i 标志。如果使用默认值,并且用户将通过网站或文件共享安装应用程序,请确保 -providerUrl 标志的值指向应用程序清单在 Web 服务器或共享上的位置。

    mage -New Deployment -ToFile WindowsFormsApp1.application -Name "Windows Forms App 1" -Version 1.0.0.0 -AppManifest 1.0.0.0\WindowsFormsApp1.manifest -providerUrl http://www.adatum.com/WindowsFormsApp1/WindowsFormsApp1.application
    
  7. 使用证书对部署清单进行签名:

    mage -Sign WindowsFormsApp1.application -CertFile mycert.pfx
    
  8. 将当前目录中的所有文件(包括 version 文件夹和 \bin 文件夹)复制到部署目标中。该目标可以是网站或 FTP 站点上的一个文件夹,也可以是文件共享或 CD。

  9. 为用户提供安装应用程序所需的 URL、UNC 或物理媒体。如果提供 URL 或 UNC,则必须为用户提供部署清单的完整路径。例如,如果 WindowsFormsApp1 将部署到 http://webserver01/ 中的 WindowsFormsApp1 目录,则完整的 URL 路径将为 http://webserver01/WindowsFormsApp1/WindowsFormsApp1.deploy。

使用 MageUI.exe 图形工具部署应用程序

  1. 打开一个 Windows SDK 命令提示,并定位到将要在其中存储 ClickOnce 文件的目录。

  2. 创建名为 bin 的子目录,将所有应用程序文件(包括可执行文件、程序集、资源和数据文件)放置在该目录中。

  3. 创建一个子目录,该子目录以部署的当前版本命名。如果是首次部署应用程序,则可以选择 1.0.0.0。

    xc3tc5xx.alert_note(zh-cn,VS.90).gif说明:

    部署的版本可能与应用程序文件的版本不同。

  4. 将 \bin 目录移动到步骤 2 中创建的目录中,然后启动图形工具:

    MageUI.exe
    
  5. 从菜单中依次选择“文件”、“新建”和“应用程序清单”,创建一个新的应用程序清单。

  6. 在默认的“名称”选项卡中,输入此部署的名称和版本号。

  7. 选择“文件”选项卡,然后单击“应用程序目录”文本框旁边的“浏览...”按钮。

  8. 选择步骤 2 中创建的包含应用程序文件的目录,然后在文件夹选择对话框中单击“确定”。

  9. 单击“填充”按钮,向文件列表中添加所有应用程序文件。如果应用程序包含多个可执行文件,可以从“文件类型”下拉列表中选择“入口点”,将此部署的主可执行文件标记为启动应用程序。(如果应用程序只包含一个可执行文件,MageUI.exe 将为您标记该文件)。

  10. 选择“所需的权限”选项卡,然后选择需要应用程序断言的信任级别。默认级别为“完全信任”,此级别适用于大多数应用程序。

  11. 从菜单中依次选择“文件”、“保存”,保存应用程序清单。保存时,系统会提示您对应用程序清单进行签名。

  12. 如果已将证书以文件方式存储在文件系统上,请使用“作为证书文件签名”选项,然后使用“...”按钮从文件系统中选择证书。

    - 或 -

    如果证书保存在可通过您的计算机访问的证书存储区中,请选择“使用存储的证书签名”选项,再从提供的列表中选择证书。

  13. 从菜单中依次选择“文件”、“新建”和“部署清单”以创建部署清单,然后在“名称”选项卡中,提供名称和版本号(在此示例中为 1.0.0.0)。

  14. 选择“发行者”选项卡,为“发行者”和“产品”提供值。((“产品”是在本地安装应用程序时指定的将显示在 Windows“开始”菜单中的应用程序名称。)

  15. 切换到“更新”选项卡,指定此应用程序的更新频率。如果应用程序使用 ClickOnce 部署 API 自己检查更新,请清除标记为“此应用程序应检查更新”的复选框。

  16. 切换到“应用程序引用”选项卡。通过单击“选择清单”按钮,然后选择在前面的步骤中创建的应用程序清单,可以预填充此选项卡中的所有值。

  17. 选择“保存”,将部署清单保存到磁盘。保存时,系统会提示您对应用程序清单进行签名。

  18. 如果已将证书以文件方式存储在文件系统上,请使用“作为证书文件签名”选项,然后使用“...”按钮从文件系统中选择证书。

    - 或 -

    如果证书保存在可通过您的计算机访问的证书存储区中,请选择“使用存储的证书签名”选项,再从提供的列表中选择证书。

  19. 将当前目录中的所有文件(包括 version 文件夹和 \bin 文件夹)复制到部署目标中。该目标可以是网站或 FTP 站点上的一个文件夹,也可以是文件共享或 CD。

  20. 为用户提供安装应用程序所需的 URL、UNC 或物理媒体。如果提供 URL 或 UNC,则必须为用户提供部署清单的完整路径。例如,如果 WindowsFormsApp1 将部署到 http://webserver01/ 中的 WindowsFormsApp1 目录,则完整的 URL 路径将为 http://webserver01/WindowsFormsApp1/WindowsFormsApp1.deploy。

后续步骤

如果需要部署应用程序的一个新版本,将需要创建一个以新版本命名的新目录(例如,1.1.0.0),然后将新应用程序文件移动到该新目录的 \bin 文件夹中。您应该生成一个新应用程序清单并将其存储在新目录中,然后让发行者对新清单进行签名。获取已签名的清单后,便可以使用 Mage.exe 更新部署清单,并在新的应用程序清单中指向它:

mage -Update WindowsFormsApp1.application -Version 1.1.0.0 -AppManifest 1.1.0.0\WindowsFormsApp1.exe.manifest

MageUI.exe 用户要执行此操作,可以打开其部署清单,选择“应用程序引用”选项卡,然后再次选择“选择清单”按钮。

由于以任何方式更改清单都会使其数字签名无效,因此在更新应用程序清单引用之后,需要重新对部署清单进行签名。

请参见

概念

ClickOnce 部署概述

参考

清单生成和编辑工具 (Mage.exe)

图形化客户端中的清单生成和编辑工具 (MageUI.exe)

ClickOnce 部署清单

ClickOnce 应用程序清单