秘訣は、いわゆるアセンブリIDを一致させることでした。
ヒント1:Mageを使用してデプロイメントマニフェスト(* .applicationファイル)を生成しないでください。GenerateDeploymentManifest
代わりに使用してください。Mageツールには2つの重要なオプションがありません。
- Mageは、デプロイメントのカルチャを指定する方法を提供しません。上記のリンクからわかるように、カルチャが一致しない場合は、ClickOnceとは別のアプリケーションです。痛い。
- 更新モードを「フォアグラウンド」、別名「開始する前に更新を確認する」、別名「オンラインアプリケーション」に設定することはできません。うーん...
ヒント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'/>
ヒント3:デプロイメントXMLの「コードベース」フィールドに正しい相対パスを指定するには、次のスニペットを使用します。
<CreateItem Include="$(MyDeploymentPath)\v$(Version)\MyApp.exe.manifest" AdditionalMetadata="TargetPath=v$(Version)\MyApp.exe.manifest">
<Output TaskParameter="Include" ItemName="EntryPoint"/>
</CreateItem>
次にに渡しEntryPoint="@(EntryPoint)"
ますGenerateDeploymentManifest
。重要なのは「TargetPath」メタデータです。うん!
ヒント4:忍耐力、古い作業マニフェストの提供、および優れた快適な差分ツール。
これは複雑で苦痛ですか?はい!しかし、公開ウィザードよりも優れていますか?OH YES!
編集: MSBuildからMageを呼び出す方法の実用的な例を投稿しましたが、変更したい設定がたくさんあり、それでも変更する必要があるため、プラグインするだけで機能するわけではありません。 ClickOnceをある程度理解します。しかし、うまくいけば、それは有用な出発点を提供することができます。