none
Windowsインストーラでインストール後、そのアプリをClickOnesでアップデートができるのでしょうか? RRS feed

  • 質問

  • VS2008でのWindowsアプリケーションでの質問です。

    Windowsインストーラで配布した後、そのアプリケーションのアップデートをClickOnesで行なえるのでしょうか?

    また、可能であればどの様な設定が必要でしょうか?

    ご存知の方、教えください。

    2014年8月9日 12:50

回答

  • ClickOnce は使えません。 

    ClickOnce と Windows インストーラの比較表:

    アプリケーションのインストール場所 
    ClickOnce: ClickOnce アプリケーション キャッシュ
    Windowsインストーラ: Program Files フォルダ



    Visual C++ MVP

    • 回答の候補に設定 星 睦美 2014年8月18日 4:45
    • 回答としてマーク 星 睦美 2014年8月27日 1:01
    2014年8月9日 19:51
  • Sheng Jiangさんが示している比較表にあるような違いがあるので出来ないということになります。
    ただし、ClickOnceの制限に引っかからないプログラムであれば手がないこともないです。

    Windowsインストーラ(msi)でClickOnceのインストールファイル群(初期設定でいうとClickOnceの発行をするとできるpublishフォルダ以下にできるファイル)を配置して、Windowsインストーラのカスタム動作でClickOnceのインストーラ(setup.exe)を起動させるという変則的なやり方が考えられます。
    既にmsiでインストール済みのプログラムの場合でもmsiのアップデートで同様にClickOnceのインストーラーを配置してやればいいことになります。

    ClickOnceとしてインストールできてしまえば後は普通にClickOnceのアプリケーションですから、アップデートも行うことができることになります。

    ClickOnceはAlluserにはインストールできないという制限も、代わりにWindowsインストーラーでスタートメニューにClickOnceのSetupへのショートカットを作れば、他のユーザーもClickOnceでインストールができます。
    ただし、このやり方だとmsiをアンインストールしてもClickOnceのアンインストールをすることが難しいです。
    (アンインストール時のカスタム動作で他の全ユーザーのClickOnceをアンインストールするということが)


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2014年8月18日 4:45
    • 回答としてマーク 星 睦美 2014年8月27日 1:01
    2014年8月11日 9:00
  • Gekkaさんの提示した方法であれば、実現できるかもしれませんが、msiで普通にインストールして以後のアップデートは、ClickOnce でということはできません。

    msiとClickOnce は、インストーラというアプリケーションカテゴリは同じですが、MS社と、Apple社の製品というくらい、テクノロジが違っているので、相互関係を結ぶことができるようになっていません。

    従来の製品はとりあえずそれとして、新たにClickOnceでインストールしてもらい、従来のものを別途アンインストールしてもらうのが一番いいと思います。

    さて、ここからはちょっと違う話。

    WindowsInsatller での配布は変えたくないが、アップデート処理を自動的にということであれば、

    msp 形式のよるアップデートを行えるようにして、なおかつ msi に埋め込み署名をセットする(InstallShield なら証明書を設定するだけで実現できます。WiXの場合は、構成によって簡単にできる場合とそうではない場合があります)ことで、昇格ダイアログを出さずにアップデートすることができます。

    これに、ClickOnce の自動更新チェックのような仕組みを盛り込むことで、自動的にアップデートすることができます。

    ただし、msi側に ClickOnce のような自動更新機構が用意されていませんので、そのあたりを作りこむ必要があります。

    仕組みそのものはかなり単純なので、それなりの知識があれば、実現自体は比較的容易に行えます。

    ただし、それを継続するための体制となるとそれなり以上の知識が必要になってくるので結構大変です(実際仕事でやってますけど、売り物にできるほど自動化はできてません)。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答の候補に設定 星 睦美 2014年8月19日 6:19
    • 回答としてマーク 星 睦美 2014年8月27日 1:01
    2014年8月18日 7:53

すべての返信

  • ClickOnce は使えません。 

    ClickOnce と Windows インストーラの比較表:

    アプリケーションのインストール場所 
    ClickOnce: ClickOnce アプリケーション キャッシュ
    Windowsインストーラ: Program Files フォルダ



    Visual C++ MVP

    • 回答の候補に設定 星 睦美 2014年8月18日 4:45
    • 回答としてマーク 星 睦美 2014年8月27日 1:01
    2014年8月9日 19:51
  • 早々ご返答ありがとうございます。

    もし可能なら便利かと思ったのですが。

    やはりダメですか。

    2014年8月10日 0:48
  • Sheng Jiangさんが示している比較表にあるような違いがあるので出来ないということになります。
    ただし、ClickOnceの制限に引っかからないプログラムであれば手がないこともないです。

    Windowsインストーラ(msi)でClickOnceのインストールファイル群(初期設定でいうとClickOnceの発行をするとできるpublishフォルダ以下にできるファイル)を配置して、Windowsインストーラのカスタム動作でClickOnceのインストーラ(setup.exe)を起動させるという変則的なやり方が考えられます。
    既にmsiでインストール済みのプログラムの場合でもmsiのアップデートで同様にClickOnceのインストーラーを配置してやればいいことになります。

    ClickOnceとしてインストールできてしまえば後は普通にClickOnceのアプリケーションですから、アップデートも行うことができることになります。

    ClickOnceはAlluserにはインストールできないという制限も、代わりにWindowsインストーラーでスタートメニューにClickOnceのSetupへのショートカットを作れば、他のユーザーもClickOnceでインストールができます。
    ただし、このやり方だとmsiをアンインストールしてもClickOnceのアンインストールをすることが難しいです。
    (アンインストール時のカスタム動作で他の全ユーザーのClickOnceをアンインストールするということが)


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2014年8月18日 4:45
    • 回答としてマーク 星 睦美 2014年8月27日 1:01
    2014年8月11日 9:00
  • Gekkaさんの提示した方法であれば、実現できるかもしれませんが、msiで普通にインストールして以後のアップデートは、ClickOnce でということはできません。

    msiとClickOnce は、インストーラというアプリケーションカテゴリは同じですが、MS社と、Apple社の製品というくらい、テクノロジが違っているので、相互関係を結ぶことができるようになっていません。

    従来の製品はとりあえずそれとして、新たにClickOnceでインストールしてもらい、従来のものを別途アンインストールしてもらうのが一番いいと思います。

    さて、ここからはちょっと違う話。

    WindowsInsatller での配布は変えたくないが、アップデート処理を自動的にということであれば、

    msp 形式のよるアップデートを行えるようにして、なおかつ msi に埋め込み署名をセットする(InstallShield なら証明書を設定するだけで実現できます。WiXの場合は、構成によって簡単にできる場合とそうではない場合があります)ことで、昇格ダイアログを出さずにアップデートすることができます。

    これに、ClickOnce の自動更新チェックのような仕組みを盛り込むことで、自動的にアップデートすることができます。

    ただし、msi側に ClickOnce のような自動更新機構が用意されていませんので、そのあたりを作りこむ必要があります。

    仕組みそのものはかなり単純なので、それなりの知識があれば、実現自体は比較的容易に行えます。

    ただし、それを継続するための体制となるとそれなり以上の知識が必要になってくるので結構大変です(実際仕事でやってますけど、売り物にできるほど自動化はできてません)。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答の候補に設定 星 睦美 2014年8月19日 6:19
    • 回答としてマーク 星 睦美 2014年8月27日 1:01
    2014年8月18日 7:53