我们最近采用Octopus Deploy作为我们的发布管理系统,并使用它来部署ClickOnce应用程序。ClickOnce 应用程序在安装时重新配置并退出。但是,我无法弄清楚如何设置应用程序的标题。
我可以通过在发布 ClickOnce 包时设置ProductName来做到这一点,但是我们编译一次并在整个部署管道中部署相同的二进制文件集。是否可以在 ClickOnce 包创建后设置 ProductName?
我们最近采用Octopus Deploy作为我们的发布管理系统,并使用它来部署ClickOnce应用程序。ClickOnce 应用程序在安装时重新配置并退出。但是,我无法弄清楚如何设置应用程序的标题。
我可以通过在发布 ClickOnce 包时设置ProductName来做到这一点,但是我们编译一次并在整个部署管道中部署相同的二进制文件集。是否可以在 ClickOnce 包创建后设置 ProductName?
这里有两个相关的 ClickOnce 清单文件:
1) 应用清单。这包含产品名称并列出了构成应用程序的所有文件。
2) 部署清单。这指的是应用程序清单,并且该文件的 URL 分发给任何想要安装该应用程序的人。
您可以在应用程序清单中更改产品名称,但您必须重新签名。因此,您将不得不重新构建部署清单并重新对其进行签名 - 因为对应用程序清单的引用包含一个现在将过时的签名哈希。
澄清一下,此产品名称是在安装时出现在“您要安装此应用程序”对话框中的名称,并且在安装后也出现在“开始”菜单中(如果 ClickOnce 设置为在本地安装,而不是始终从远程服务器)。
仅供参考,我使用以下命令行分别重建应用程序和部署清单(选项是方括号是可选的):
创建/更新应用程序清单:
mage -New Application -ToFile AppFiles/fooApp_1.2.0.0/fooApp.exe.manifest -Name "fooApp Name" -Version 1.2.0.0 -FromDirectory AppFiles/fooApp_1.2.0.0 [-Processor x86]
签署应用程序清单:
mage -Sign AppFiles//fooApp_1.2.0.0/fooApp.exe.manifest -CertFile mycert.pfx -Password mypass
创建/更新部署清单
mage -New Deployment -Install true -Publisher "Foo Corp." -ProviderUrl "http://fooserver/mydeploymentfolder/fooApp.application" -AppManifest AppFile/fooApp_1.2.0.0/fooApp.exe.manifest -ToFile fooApp.application [-Processor x86]
签署部署清单:
mage -Sign fooApp.application -CertFile mycert.pfx -Password mypass
对于那些你可能仍然像我最近所做的那样在 Octopus Deploy 中使用 Click-Once 包的人:
我创建了一个步骤脚本模板,它将基于部署过程的上一步创建一个 Click-Once 包。将打包从上一步安装的二进制文件,并使用带有证书的 mage 对包进行签名。
它应该带有足够的参数,最终使使用 Octopus 的 Click-Once 包创建快速而简单。
HTH