1

MSBuild でパブリッシュ タスクを使用して CD の ClickOnce パブリケーションを作成する方法を知っている人はいますか?

VS2008 には、[CD への発行] ラジオ ボタンを選択できる「発行ウィザード」があります。クリック ワンス インストールを、CD への書き込みに適したローカル フォルダーに発行します。

スケジュールされた MSBuild に従って、後処理手順を実行して構成し、特定の環境にインストールします。ClickOnce 出力の CD を作成するスクリプト可能な方法が必要です。

このプロセスを Web インストールとファイル共有インストールで機能させることができましたが、「発行ウィザード」が、私が発見できない隠れたステップを行っているようです。

パブリッシュ ダイアログ、パブリッシュ ウィザード、msbuild パブリッシュ ターゲット、mage.exe および mageui.exe のさまざまなプロパティを相互に関連付けようとして、頭がおかしくなってしまいました。同じ名前の項目もあれば、ダイアログとプロパティが異なるものもあり、ある領域では設定できても別の領域では設定できないものもあります。

ClickOnce の自動化が可能であることはわかりますが、全体として、それは GUI テクノロジのようであり、スクリプト化はその粒度に反しているようです。

明細書

4

2 に答える 2

1

これに加えて、発行ステップの出力で MageUi を実行することと関係があるようです。

コマンドラインから MSBuild で発行すると、次のようになります。

msbuild  C:\myapp.vbproj /target:publish `
/property:PublishDir=c:\ClickOnce\ `
/property:SolutionDir=C:\trunk\myapp\ `
/property:TargetZone=LocalIntranet `
/property:MapFileExtensions=True `
/property:PublisherName='my publisher' `
/property:ProductName='myProduct' `
/property:BootstrapperEnabled=True `
/property:IsWebBootstrapper=False `
/property:GenerateManifests=True `
/property:ApplicationVersion=1.2.3.4 `
/property:Configuration=Debug `
/property:UpdateUrl=http://localhost/ClickOnce/ `
/property:UpdateEnabled=True `
/property:Install=True 

次に、CD からインストールできるフォルダーを作成します。

構成ファイルを操作し、別のプロセスから追加の出力を発行フォルダーに追加し、MageUI を使用してアプリケーションと配置マニフェストを再生成すると、実際には updateURL からインストールされるファイルベースのインストールが作成されます。インターネットから切断すると、「リモートサーバーに接続できません」という例外が発生するため、更新を確認するだけでなく、Web サーバーからもインストールするように要求されます。

于 2008-12-09T23:41:52.953 に答える
1

さて、私は自分の質問に答えました。

Httpエンコーディングの問題です!

アプリケーションを公開すると、次のようなフォルダー構造になります: C:\myApp\Application Files\version 1

公開されたアプリのコンテンツを変更する場合 (構成ファイルを置き換える場合と同様)、アプリケーション マニフェストと配置マニフェストを再署名する必要があります。

そうすると、MageUi.exe は application.manifest の「場所」を HttpEncode します。

したがって、配置マニフェストには、アプリケーション マニフェストへのローカル ファイル パスが Application%20Files\myApp_version\myApp.exe.manifest のようなものであることが示されています。

そして、そのパスが存在しないため、おそらく CD ベースのインストールが、存在する場合は http: 更新サーバーから実際にインストールされ、存在しない場合は失敗します。

私たちの回避策は、「Application Files」の名前を「ApplicationFiles」に変更することです。

信じられない...

于 2008-12-11T18:12:14.820 に答える