到目前为止,我们的应用程序已通过Visual Studio"发布"向导使用ClickOnce发布.这非常痛苦,我们使用msbuild/mage自动化了这个过程.
不幸的是,新部署似乎与旧部署不兼容,在(测试)用户更新时给出"部署标识与订阅不匹配"错误.
现在使用"发布"和我们的Mage脚本生成的文件之间存在很多差异,但我们无法全部消除它们.例如,"Publisher"似乎没有得到尊重GenerateDeploymentManifest,而Mage -New Deployment无法将UpdateMode设置为Foreground.还有其他类似的案例.
有没有人成功地离开了"发布"向导而不需要整个用户群重新安装应用程序?你的方法是什么?
PS VisualStudio 2008; 所有用户都在.NET Framework 3.5 SP1上.
Rom*_*kov 17
诀窍是匹配所谓的装配身份.
提示#1:不要使用Mage生成部署清单(*.application文件).请GenerateDeploymentManifest改用.Mage工具缺少两个关键选项:
提示#2:请使用Mage添加发布者并签署部署证书.这是因为GenerateDeploymentManifest似乎忽略了Publisher(至少在3.5 SP1中),同样SignFile也无法使用.pfx文件作为密钥.哎呦.
<Exec Command='"c:\path\to\mage.exe" -Update "$(MyOutputPath)\MyApp.application" -Publisher MyCompany.com -CertFile path\to\MyAppKey.pfx'/>
Run Code Online (Sandbox Code Playgroud)
提示#3:要为部署XML中的"codebase"字段提供正确的相对路径,请使用以下代码段:
<CreateItem Include="$(MyDeploymentPath)\v$(Version)\MyApp.exe.manifest" AdditionalMetadata="TargetPath=v$(Version)\MyApp.exe.manifest">
<Output TaskParameter="Include" ItemName="EntryPoint"/>
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
然后传递EntryPoint="@(EntryPoint)"给GenerateDeploymentManifest.关键位是"TargetPath"元数据.呸!
提示#4:耐心,旧工作清单的供应,以及良好的舒适差异工具.
这是复杂而痛苦的吗?是! 但它比发布向导更好吗?哦,是的!
编辑:我已经发布了一个如何从MSBuild调用Mage的工作示例 - 但是工作并不意味着你可以插入它,因为你可能想要改变很多涉及的设置,你仍然需要在某种程度上理解ClickOnce.但希望它能提供一个有用的起点.
| 归档时间: |
|
| 查看次数: |
4585 次 |
| 最近记录: |