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

如果您无法使用 Visual Studio 来部署 ClickOnce 应用程序,或者是需要使用高级部署功能(如受信任的应用程序部署),则应使用 Mage.exe 命令行工具来创建 ClickOnce 清单。 此演练说明如何使用清单生成和编辑工具的命令行版本 (Mage.exe) 或图形版本 (MageUI.exe) 来创建 ClickOnce 部署。

系统必备

在本演练中,生成部署之前,您需要选择一些系统必备组件和选项。

  • 安装 Mage.exe 和 MageUI.exe。

    Mage.exe 和 MageUI.exe 是 Windows 软件开发包 (SDK) 的一部分。 您必须已安装 Windows SDK,或者拥有 Visual Studio 随附的 Windows SDK 版本。 有关更多信息,请参见 MSDN 上的 Windows SDK

  • 提供要部署的应用程序。

    本演练假设您有一个已准备好要部署的 Windows 应用程序。 此应用程序将称为“AppToDeploy”。

  • 确定部署的分发方式。

    分发选项包括:Web、文件共享或 CD。 有关更多信息,请参见 ClickOnce 安全和部署

  • 确定应用程序是否需要提升的信任级别。

    如果应用程序需要完全信任(例如,对用户系统的完全访问权限),可以使用 Mage.exe 的 -TrustLevel 选项进行此设置。 如果要为应用程序定义自定义的权限集,可以使用文本编辑器或 MageUI.exe 从其他清单复制 Internet 或 Intranet 权限部分,根据需要对其进行修改,然后将其添加到应用程序清单中。 有关更多信息,请参见受信任的应用程序部署概述

  • 获取 Authenticode 证书。

    应使用 Authenticode 证书为部署签名。 可使用 Visual Studio、MageUI.exe 或 MakeCert.exe 和 Pvk2Pfx.exe 工具生成测试证书,也可以从证书颁发机构 (CA) 获取证书。 如果选择使用“受信任的应用程序部署”,还必须将证书一次性安装到所有客户端计算机上。 有关更多信息,请参见受信任的应用程序部署概述

  • 确保应用程序的清单不具有 UAC 信息。

    您需要确定应用程序包含的清单是否具有用户帐户控制 (UAC) 信息,如 <dependentAssembly> 元素。 若要检查应用程序清单,可使用 Windows Sysinternals Sigcheck 实用工具。

    如果应用程序包含的清单具有 UAC 详细信息,则必须重新生成不带 UAC 信息的清单。 对于 Visual Studio 中的 C# 项目,请打开项目属性,选择“应用程序”选项卡。 在**“清单”下拉列表中,选择“创建不带清单的应用程序”。 对于 Visual Studio 中的 Visual Basic 项目,请打开项目属性,选择“应用程序”选项卡,然后单击“查看 UAC 设置”**。 在打开的清单文件中,删除那个 <asmv1:assembly> 元素内的所有元素。

  • 确定应用程序在客户端计算机上是否有系统必备组件要求。

    对于从 Visual Studio 中部署的 ClickOnce 应用程序,可在部署中包含系统必备组件的安装引导程序 (setup.exe)。 本演练创建 ClickOnce 部署所需的两个清单。 系统必备组件引导程序可使用 GenerateBootstrapper 任务来创建。

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

  1. 创建用于存储 ClickOnce 部署文件的目录。

  2. 在刚创建的部署目录中,创建一个版本子目录。 如果这是首次部署应用程序,请将该版本子目录命名为 1.0.0.0。

    备注

    部署的版本可以与应用程序的版本不同。

  3. 将所有应用程序文件(包括可执行文件、程序集、资源和数据文件)全部复制到该版本子目录中。 如有必要,可以创建包含其他文件的其他子目录。

  4. 打开 Windows SDK 或 Visual Studio 命令提示,切换到该版本子目录。

  5. 调用 Mage.exe,创建应用程序清单。 以下语句为编译为在 Intel x86 处理器上运行的代码创建应用程序清单。

    mage -New Application -Processor x86 -ToFile AppToDeploy.exe.manifest -name "My App" -Version 1.0.0.0 -FromDirectory . 
    

    备注

    请确保在 -FromDirectory 选项后包括点 (.),用于指示当前目录。如果不包括句点,则必须指定应用程序文件的路径。

  6. 使用 Authenticode 证书为应用程序清单签名。 用证书文件的路径替换 mycert.pfx。 用您证书文件的密码替换密码。

    mage -Sign AppToDeploy.exe.manifest -CertFile mycert.pfx -Password passwd
    
  7. 切换到部署目录的根目录。

  8. 通过调用 Mage.exe 生成部署清单。 默认情况下,Mage.exe 会将 ClickOnce 部署标记为已安装的应用程序,以便它既可以联机运行又可以脱机运行。 若要使应用程序仅当用户联机时可用,请使用值为 false 的 -Install 选项。 如果使用默认值,且用户将通过网站或文件共享来安装您的应用程序,请确保 -ProviderUrl 选项的值指向应用程序清单在 Web 服务器或共享上的位置。

    mage -New Deployment -Processor x86 -Install true -Publisher "My Co." -ProviderUrl "\\myServer\myShare\AppToDeploy.application" -AppManifest 1.0.0.0\AppToDeploy.exe.manifest -ToFile AppToDeploy.application
    
  9. 使用 Authenticode 证书为部署清单签名。

    mage -Sign AppToDeploy.application -CertFile mycert.pfx -Password passwd
    
  10. 将部署目录中的所有文件都复制到部署目标或媒体。 这可以是网站或 FTP 站点上的文件夹、文件共享或 CD-ROM。

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

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

  1. 创建用于存储 ClickOnce 部署文件的目录。

  2. 在刚创建的部署目录中,创建一个版本子目录。 如果这是首次部署应用程序,请将该版本子目录命名为 1.0.0.0。

    备注

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

  3. 将所有应用程序文件(包括可执行文件、程序集、资源和数据文件)全部复制到该版本子目录中。 如有必要,可以创建包含其他文件的其他子目录。

  4. 启动图形工具 MageUI.exe。

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

  6. 在默认的**“名称”选项卡中,键入此部署的名称和版本号。 此外,指定生成应用程序时针对的“处理器”**,如 x86。

  7. 选择**“文件”选项卡,然后单击“应用程序目录”文本框旁边的省略号(“...”**)按钮。 随即将显示“浏览文件夹”对话框。

  8. 选择包含应用程序文件的版本子目录,然后单击**“确定”**。

  9. 如果将从 Internet Information Services (IIS) 进行部署,请选中**“填充时为没有 .deploy 扩展名的任何文件添加该扩展名”**复选框。

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

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

  12. 从菜单中选择文件,然后选择另存为。 将出现“签名选项”对话框,提示您为应用程序清单签名。

  13. 如果已将证书作为文件存储在文件系统上,请使用**“使用证书文件签名”选项,然后使用省略号(“...”**)按钮从文件系统中选择证书。 然后,键入证书密码。

    - 或 -

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

  14. 单击**“确定”**,为应用程序清单签名。 将出现“另存为”对话框。

  15. 在“另存为”对话框中,指定版本目录,然后单击**“保存”**。

  16. 从菜单中依次选择**“文件”“新建”“部署清单”**,创建部署清单。

  17. 在**“名称”选项卡上,为此部署指定名称和版本号(在本示例中为 1.0.0.0)。 此外,指定生成应用程序时针对的“处理器”**,如 x86。

  18. 选择**“说明”选项卡,为“发布者”“产品”指定值。 其中“产品”**是应用程序安装在客户端计算机上供脱机使用时,Windows“开始”菜单上给出的应用程序名称。

  19. 选择**“部署选项”选项卡,在“启动位置”**文本框中,指定应用程序清单在 Web 服务器或共享上的位置。 例如,\\myServer\myShare\AppToDeploy.application。

  20. 如果在上一步添加了 .deploy 扩展名,则在此还应选择使用 .deploy 文件扩展名

  21. 选择**“更新选项”选项卡,指定此应用程序的更新频率。 如果应用程序通过 UpdateCheckInfo 自行检查更新,请清除“此应用程序应检查更新”**复选框。

  22. 选择**“应用程序引用”选项卡,然后单击“选择清单”**按钮。 将出现一个“打开”对话框。

  23. 选择之前创建的应用程序清单,然后单击**“打开”**。

  24. 从菜单中选择文件,然后选择另存为。 将出现“签名选项”对话框,提示您为部署清单签名。

  25. 如果已将证书作为文件存储在文件系统上,请使用**“使用证书文件签名”选项,然后使用省略号(“...”**)按钮从文件系统中选择证书。 然后,键入证书密码。

    - 或 -

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

  26. 单击**“确定”**,为部署清单签名。 将出现“另存为”对话框。

  27. 在**“另存为”对话框中,上移一级目录,转至部署的根位置,然后单击“保存”**。

  28. 将部署目录中的所有文件都复制到部署目标或媒体。 这可以是网站或 FTP 站点上的文件夹、文件共享或 CD-ROM。

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

后续步骤

在需要部署应用程序的新版本时,请新建一个以新版本命名的目录(例如,1.0.0.1),然后将新应用程序文件复制到新目录中。 随后,您需要按照前面的步骤,创建新应用程序清单并为其签名,更新部署清单并为其签名。 请注意,应在 Mage.exe -New 调用和 –Update 调用中指定同一较高版本,因为 ClickOnce 仅更新较高的版本,以最左面的整数为最高有效位。 如果您使用 MageUI.exe,则可以按以下方法更新部署清单:打开清单,选择**“应用程序引用”选项卡,单击“选择清单”**按钮,然后选择更新后的应用程序清单。

请参见

参考

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

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

ClickOnce 部署清单

ClickOnce 应用程序清单

概念

发布 ClickOnce 应用程序