创建 ClickOnce 应用程序,然后将其提供给客户发布和部署时,客户传统上必须更新部署清单并重新对其进行签名。 尽管在大多数情况下,这仍然是首选方法,但 .NET Framework 3.5 允许你创建可由客户部署的 ClickOnce 部署,而无需重新生成新的部署清单。 有关详细信息,请参阅 部署 ClickOnce 应用程序以进行测试和生产服务器而不辞职。
创建 ClickOnce 应用程序后,将其提供给客户进行发布和部署时,应用程序可以使用客户的品牌或保留您的品牌。 例如,如果应用程序是单个专有应用程序,则可能需要保留品牌。 如果应用程序是为每个客户高度自定义的,则可能需要使用客户的品牌。 通过 .NET Framework 3.5,可以在向组织提供要部署的应用程序时保留品牌、发布者信息和安全签名。 有关详细信息,请参阅 创建 ClickOnce 应用程序供其他人部署。
注释
在本演练中,你将使用命令行工具 Mage.exe 或图形工具 MageUI.exe手动创建部署。 有关手动部署的详细信息,请参阅 演练:手动部署 ClickOnce 应用程序。
注释
在 ClickOnce for .NET Core 3.1 和 .NET 5 或更高版本中,使用 dotnet-mage.exe 而不是 Mage.exe。 有关详细信息,请参阅 ClickOnce for .NET。
先决条件
若要执行本演练中的步骤,需要满足以下条件:
已准备好部署的 Windows 窗体应用程序。 此应用程序称为 WindowsFormsApp1。
Visual Studio 或 Windows SDK。
使用 Mage.exe 部署具有多个部署和品牌支持的 ClickOnce 应用程序
打开 Visual Studio 命令提示符或 Windows SDK 命令提示符,并更改为要在其中存储 ClickOnce 文件的目录。
创建以部署的当前版本命名的目录。 如果这是首次部署应用程序,则可能选择 1.0.0.0。
注释
部署的版本可能与应用程序文件的版本不同。
在此处创建名为 bin 的子目录并复制所有应用程序文件,包括可执行文件、程序集、资源和数据文件。
使用 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 -UseManifestForTrust true -Publisher "A. Datum Corporation"使用数字证书对应用程序清单进行签名。
mage -Sign WindowsFormsApp1.exe.manifest -CertFile mycert.pfx使用 Mage.exe 调用,生成部署清单。 默认情况下, Mage.exe 会将 ClickOnce 部署标记为已安装的应用程序,以便它可以联机和脱机运行。 若要使应用程序仅在用户处于在线状态时才可用,请使用值为
f的-i参数。 由于此应用程序将利用多个部署功能,因此请排除-providerUrlMage.exe的参数 。 在 3.5 之前版本的 .NET Framework 中,如果对脱机应用程序省略-providerUrl,将导致错误。mage -New Deployment -ToFile WindowsFormsApp1.application -Name "Windows Forms App 1" -Version 1.0.0.0 -AppManifest 1.0.0.0\WindowsFormsApp1.manifest不要对部署清单进行签名。
向客户提供所有文件,他们将在其网络上部署应用程序。
此时,客户必须使用自己的自生成证书对部署清单进行签名。 例如,如果客户为名为 Adventure Works 的公司工作,则可以使用 MakeCert.exe 工具生成自签名证书。 接下来,使用 Pvk2pfx.exe 工具将 MakeCert.exe 创建的文件合并到可传递给 Mage.exe的 PFX 文件中。
makecert -r -pe -n "CN=Adventure Works" -sv MyCert.pvk MyCert.cer pvk2pfx.exe -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx客户接下来使用此证书对部署清单进行签名。
mage -Sign WindowsFormsApp1.application -CertFile MyCert.pfx客户将应用程序部署到其用户。
使用 MageUI.exe 部署具有多个部署和品牌支持的 ClickOnce 应用程序
打开 Visual Studio 命令提示符或 Windows SDK 命令提示符,并导航到在其中存储 ClickOnce 文件的目录。
在此处创建名为 bin 的子目录并复制所有应用程序文件,包括可执行文件、程序集、资源和数据文件。
创建一个以当前版本的部署命名的子目录。 如果这是首次部署应用程序,则可能选择 1.0.0.0。
注释
部署的版本可能与应用程序文件的版本不同。
将 \bin 目录移到在步骤 2 中创建的目录中。
启动图形工具 MageUI.exe。
MageUI.exe通过从菜单中选择 “文件”、“ 新建”和 “应用程序清单”创建新的应用程序清单 。
在“默认 名称 ”选项卡上,输入此部署的名称和版本号。 此外,为 发布服务器提供一个值,该值将用作部署应用程序时“开始”菜单中应用程序的快捷链接的文件夹名称。
选择 “应用程序选项 ”选项卡,然后单击“ 使用应用程序清单获取信任信息”。 这将为该 ClickOnce 应用程序启用第三方品牌标识。
选择“文件”选项卡,然后单击“应用程序目录”文本框旁边的“浏览”按钮。
选择包含在步骤 2 中创建的应用程序文件的目录,然后单击“ 确定 ”文件夹选择对话框。
单击“ 填充 ”按钮,将所有应用程序文件添加到文件列表。 如果应用程序包含多个可执行文件,请从“文件类型”下拉列表中选择入口点,将此部署的主可执行文件标记为启动应用程序。 (如果应用程序仅包含一个可执行文件, MageUI.exe 会为你标记该文件。
选择“ 所需权限 ”选项卡,然后选择需要应用程序断言的信任级别。 默认值为 “完全信任”,适用于大多数应用程序。
从菜单中选择 “文件”、“ 保存 ”,然后保存应用程序清单。 保存应用程序清单时,系统会提示你对应用程序清单进行签名。
如果证书作为文件存储在文件系统上,请使用 “签名为证书文件 ”选项,并使用省略号(...)按钮从文件系统中选择证书。
-或-
如果证书保存在可从计算机访问的证书存储中,请选择 “使用存储的证书”选项,然后从提供的列表中选择证书。
从菜单中选择 “文件”、“ 新建”和 “部署清单 ”以创建部署清单,然后在“ 名称 ”选项卡上提供名称和版本号(本示例中为 1.0.0.0 )。
切换到 “更新 ”选项卡,并指定希望此应用程序更新的频率。 如果应用程序使用 ClickOnce 部署 API 检查更新本身,请清除标记为 “此应用程序应检查更新”的复选框。
切换到 “应用程序引用 ”选项卡。可以通过单击 “选择清单 ”按钮并选择在前面的步骤中创建的应用程序清单来预填充此选项卡上的所有值。
选择 “保存 ”并将部署清单保存到磁盘。 保存应用程序清单时,系统会提示你对应用程序清单进行签名。 单击“ 取消” 保存清单而不对其进行签名。
向客户提供所有应用程序文件。
此时,客户必须使用自己的自生成证书对部署清单进行签名。 例如,如果客户为名为 Adventure Works 的公司工作,则可以使用 MakeCert.exe 工具生成自签名证书。 接下来,使用 Pvk2pfx.exe 工具将 MakeCert.exe 创建的文件合并到可传递给 MageUI.exe的 PFX 文件中。
makecert -r -pe -n "CN=Adventure Works" -sv MyCert.pvk MyCert.cer pvk2pfx.exe -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx生成证书后,客户现在通过在 MageUI.exe中打开部署清单,然后保存该清单来对部署清单进行签名。 出现签名对话框时,客户选择“ 签名为证书文件 ”选项,然后选择他在磁盘上保存的 PFX 文件。
客户将应用程序部署到其用户。