web-dev-qa-db-ja.com

2つのClickOnceバージョンを同時に展開するにはどうすればよいですか?

ユーザーが製品版とテスト版の両方を並行して実行できる、アプリケーション用のテストClickOnceサーバーを用意したいと思います。これは可能ですか?

最初にAssemblyInfo.csで以下を使用し、ClickOnceデプロイメントで名前を変更してみましたが、これはすべて、ユーザーの製品バージョンをテストバージョンで上書きすることでした。同様に、本番サーバーに戻ったときも同じことをしました。

#if DEBUG
[Assembly: AssemblyTitle("Product Name - Test")]
#else
[Assembly: AssemblyTitle("Product Name")]
#endif

また、2つの展開場所が互いに異なり、異なるサーバー上にあることも明確にする必要があると思いました。

[〜#〜] update [〜#〜]

また、デバッグモードに応じてマニフェストにGUIDを設定しようとしましたが、やはり機能しません(ダミーGUIDは以下で使用されます)。

#if DEBUG
[Assembly: Guid("AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA")]
#else
[Assembly: Guid("BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB")]
#endif

2つはどのように区別されますか?それぞれのインストールの確認を取得すると、インストーラーはそれらを2つの別個のプログラムと見なしているようです。ただし、2番目のプログラムをインストールすると、「プログラムの追加と削除」には後者のみが表示されますが、前者はまだディスク上にあります。後で再インストールすると、実行されるだけですが、プログラムの追加と削除が切り替わります。以前の名前に戻ります。

36
Brett Ryan

ちょっと足りないように聞こえるかもしれませんが、これを行う最も簡単な方法は、ソリューションに2つのEXEプロジェクトを含めることです。これらのそれぞれのMainメソッドは、元のEXEプロジェクトのMainメソッドを呼び出すだけです(これは、DLL)に切り替えたばかりです。ファイル)。

つまり、各EXEプロジェクトには、独自のClickOnce公開設定と、独自のapp.configファイルを含めることができます。これは、本番バージョンとテストバージョンで異なる接続文字列があることを意味します。

もう1つのオプション(最も理にかなっていると思われるオプション)は、 MageUI.exe を使用してClickOnceファイルを手動で作成することです。これにより、毎回異なる構成ファイルを選択して場所を公開できます。ツールを実行しました。コマンドラインバージョン(Mage.exe)もあるので、理論的にはこれを自動化できます。

ただし、2つの「ランナー」プロジェクトを使用したソリューションの方がはるかに簡単であることがわかりました。最初に試してみることをお勧めします。

27

ClickOnce:並行バージョンはこれを行う方法を説明しています。

14
RobinDotNet

.csprojを手動で編集して、debug/releaseに別のProductNameを指定しました。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    ...
    <PublishUrl>publishbeta\</PublishUrl>
    <InstallUrl>http://www.softwareabc.com/download/beta/</InstallUrl>
    <ProductName>Software ABC Test</ProductName>
    <AssemblyName>SoftABCTest</AssemblyName>
    <ApplicationIcon>Resources\Test.ico</ApplicationIcon>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
    <PublishUrl>publish\</PublishUrl>
    <InstallUrl>http://www.softwareabc.com/download/</InstallUrl>
    <ProductName>Software ABC</ProductName>
    <AssemblyName>SoftABC</AssemblyName>
    <ApplicationIcon>Resources\Application.ico</ApplicationIcon>
</PropertyGroup>

注意点の1つは、デバッグとリリースを切り替えた場合、Visual Studio2010ではこれが更新されないことです。ソリューションをロードしたときにのみ有効になるため、必ずデバッグ/リリースを切り替えてから、ソリューションを閉じてから再度開いてください。

6
LongZheng

Click Onceアプリケーションを公開するようにプロジェクトを少なくとも1回構成した後、csprojを手動で編集する必要があります。

ClickOnce関連のプロパティの一部を_<PropertyGroup>_から<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">プロパティグループに移動し、<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">プロパティグループの下に複製します。

複製するプロパティは、ApplicationRevision(個別のリビジョンカウンターが必要な場合のみ)、PublishUrlProductName、およびSuiteName(最後の2つが可能である必要があります)です。ターゲットマシンの構成を区別するため)。また、AssemblyNameプロパティを(最初のグループから削除せずに)オーバーライドする必要があります。

任意の構成でプロジェクトをデバッグできるようにする場合は、StartActionプロパティを上書きした各グループにStartProgramプロパティとAssemblyNameプロパティも追加する必要があります。

これらのプロパティに適切な(つまり異なる)値を指定すると、目的の構成を選択するだけで、両方の構成を公開できますプロジェクトを変更する必要はありません。ただし、異なる構成の公開間でプロジェクトをアンロードする必要があります、またはVisualStudioがパラメーターを台無しにすることに注意してください。

その後、同じターゲットマシンに両方のバージョンをインストールすることもできます。

同時バージョン管理に関する簡潔なビデオを参照してください:ClickOnce:同時バージョン

1
dgp

プロパティウィンドウの[アプリケーション]タブでアセンブリ名を変更してみてください。

1
jaywalker

PeterMortensenの2つのプロジェクトシナリオのバリエーション。開発、カスタマーテスト、カスタマーリリースが必要でした。私の場合、顧客テストで、ライブではなくテストであるという視覚的な手がかりを提供したいと思いました(たとえば、タイトルの「TEST」と別の視覚テーマ)。

2つのソリューションと2つのスタブプロジェクトを用意するのが最も簡単だと思いました。独自のスタブprogram.cs、app.config、およびassemblyinfo.csを持つ、独自のディレクトリ内の各プロジェクト。

Dev/testソリューションでは、デバッグ構成はdev用であり、リリース構成は顧客テスト用でした。 SlowCheetahを使用して、後者のapp.configを変換しました。

カスタマーリリースソリューションでは、リリース構成のみが必要でした。

0
Merlinz

私はいつもそうしています。特定のユーザーが取得するバージョンを変更する画面もアプリケーションにあります。そして、私はアプリ側でトリッキーなことは何もしていません。すべての魔法は、ClickOnceファイルをホストしているWebサーバーにあります。

私の相棒が書いた記事を見てください、ClickOnceを使用した細粒度バージョン管理。それは私たちがそれをどのようにしたかを説明しています。

0
Jonathan Allen