異なる環境用に異なる構成ファイルを使用して、同じアセンブリをいくつか展開しています。これらをパッケージ化して、異なるデプロイメントID(Program_ENV1、Program_ENV2など)を持つ個別のClickOnceデプロイメントにします。
アプリケーションIDは、それらすべてのProgram.exeです。これは、それを使用する実行可能ファイルがコンパイルされたものと同じ名前である必要があるサードパーティコンポーネントがあるためです。
(テストのために)同じマシンに同じバージョン番号の複数のインストールを行いたい場合、インストール時に同じアプリケーションIDを持つものがすでに存在するというエラーが発生します。
展開ごとに新しいバージョン番号で個別のビルドを作成する必要はありません(QAはバージョンX.X.X.46ではなくバージョンX.X.X.45アセンブリでサインオフしました)。
この問題を回避する別の方法はありますか?
ClickOnceアプリケーションの同時バージョンを実行するには、AssemblyNameを変更する必要があります。また、スタートメニューでどちらがどれであるかがわかるように、PublishプロパティでProductNameも変更することをお勧めします。
最終的に-u -Updateオプションを使用して、本番環境に基づいてQAの新しいデプロイメントを作成しました。
検証をテストするために行った手順は次のとおりです
cd "$(TargetDir)"
"$(ProjectDir)mage.exe"-新しいアプリケーション-名前$(ProjectName)-p msil -TrustLevel FullTrust -Version 1.0.0.0-FromDirectory。 -ToFile "。\ $(TargetFileName).manifest"
"$(ProjectDir)mage.exe" -New Deployment -Install false -Name $(ProjectName)-p msil -Version 1.0.0.0 -AppManifest "。\ $(TargetFileName).manifest" -ToFile "。\ $(TargetName) 。応用"
"$(ProjectDir)mage.exe" -Update "。\ $(TargetName).application" -Install false -Name $(ProjectName).QA -p msil -Version 1.0.0.0 -AppManifest "。\ $(TargetFileName)。マニフェスト "-ToFile"。\ $(TargetName).QA.application "
cd "$(TargetDir)"経由で"$(TargetDir)"に変更する必要がありました。 mage はディレクトリとファイルパスを処理しないためです。二重引用符で囲まれたスペースを含むパスを指定したときに正しく。これを回避するために、現在のディレクトリをファイルの作成先の場所に設定します。
2行目はマニフェストファイルを作成します
3行目は、Productionデプロイメントファイルを作成します。
4行目は、Productionデプロイメントファイルから[〜#〜] qa [〜#〜]デプロイメントファイルを作成します。 (注: [〜#〜] qa [〜#〜] をデプロイメントファイルとアプリケーション名に追加します。)
4行目では、2番目のアプリケーションファイルが作成されます。両方のアプリケーションを実行すると、バイナリは同じになりますが、 ApplicationDeployment.UpdateLocation はそれぞれ異なります。 1つはファイル名$(TargetName).applicationを持ち、もう1つはファイル名$(TargetName).QA.applicationを持ちます。私のコードでは、これを使用して、実行されたアプリケーションの「バージョン」を判別できます([〜#〜] qa [〜#〜]またはProduction)
Karg、MageUIを使用する場合は、ApplicationIdentityを変更して、同じアプリケーションの複数の公開バージョンを一度に実行できます。
MageUI を使用してみてください。デプロイメントマニフェスト(拡張子が.applicationのマニフェスト)を開きます。左側のリストから[名前]を選択し、[名前]テキストボックスを編集します。次に、リストから「説明」を選択し、「製品」フィールドを編集します。そうすれば、スタートメニューとプログラムの追加/削除でさまざまなインストールを区別できるようになります。
変更を保存し、マニフェストに再署名すれば、準備は完了です。