none
Visual StudioのようなWeb インストーラーを作りたいときの一般的な方法について RRS feed

  • 質問

  • お世話になります。

    どこのフォーラムに投稿して良いか分からなかったので、こちらに投稿します。

    VisualStudioで作成したアプリケーションをインストーラーでインストールしたいと思っています。

    このインストーラーをWeb インストールの形で作りたいと考えています。


    例えば、Visual Studioのインストーラーは、小さいランチャーEXEを一旦ダウンロードして、そのEXEを起動すると、何をインストールするか

    選択して、必要なものをサイレントでWEBからダウンロードしてインストールしています。

    これと同じ形でインストールしたいのです。

    上記のようなインストーラーを作りたいとき、どのように作るのが一般的なのでしょうか。

    Install Shieldの製品版、Install Shield Limited Edition、Wixのようなインストーラー作成ツールで

    作ることが出来るか調べてみたのですが、Web Installをサポートしていて、簡単にVisualStudioのような

    インストーラーを作成できる機能は無いように思います。

    もしかすると、Visual StudioのようなWebインストーラーを作りたいときは、どのインストーラー作成ツールを使ったとしても、

    自前でコーディングして、作りこまないといけないのでしょうか。

    何かアドバイスを頂けると助かります。

    以上、よろしくお願い致します。

    • 移動 星 睦美 2016年5月13日 0:20 Visual Studio 共通 から
    2016年4月27日 11:31

回答

  • Visual Studio 本体のインストーラは WiX(Windows Installer Xml toolkit)で作られています。

    もちろん独自UIを用意してそれを使うこともできます。また、標準で VC++ランタイムインストーラと同じようなUIが提供されているので、それを使って作ることもできます(最初はこっちでいいと思います)。

    どんなものか程度ですが、

    http://www.slideshare.net/kaorunakajima/ss-56292124

    に、参考にできる資料が上がってます。私が書いたものではありませんけど。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    • 回答の候補に設定 星 睦美 2016年5月10日 5:03
    • 回答としてマーク maechang 2016年5月12日 5:07
    2016年4月28日 1:50

すべての返信

  • ClickOnce配置はどうでしょうか? ドキュメントやVisual Studioでのサポートは.NETを前提に作られていますが、.NETに限定したものではなく、Google Chromeのインストールなどにも使われています。
    2016年4月27日 12:46
  • 佐祐理さん、アドバイスありがとうございます。

    ClickOnceは、レガシーなイメージが自分の中にあったのですが、それは思い込みで、結構使われているんですね!

    下記も見ていたのですが、ClickOnceは消えていく技術なのかなーとか勝手に思っていたりします。

    http://www.slideshare.net/kaorunakajima/ss-56292124

    Google Chromeは、てっきりGoogleOmahaでインストーラーを作っていると思っていました。

    https://osdn.jp/magazine/11/09/16/0428202

    ClickOnce以外に、VisualStudioライクなWebインストーラーを作るのは困難なんですかね?
    できれば、画面も色々調節できて、VisualStudioみたいな黒くてモダンなUIとかカスタマイズできるインストーラーだと楽しいのですが。。。

    2016年4月27日 17:43
  • GoogleOmahaの1段目にClickOnceが使用されているのではないでしょうか?

    またインストーラーを含めアプリケーションを作るのが開発者のすることですから、VisualStudioライクなWebインストーラーを作りたければ作ればいいと思います。

    2016年4月27日 21:46
  • Visual Studio 本体のインストーラは WiX(Windows Installer Xml toolkit)で作られています。

    もちろん独自UIを用意してそれを使うこともできます。また、標準で VC++ランタイムインストーラと同じようなUIが提供されているので、それを使って作ることもできます(最初はこっちでいいと思います)。

    どんなものか程度ですが、

    http://www.slideshare.net/kaorunakajima/ss-56292124

    に、参考にできる資料が上がってます。私が書いたものではありませんけど。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    • 回答の候補に設定 星 睦美 2016年5月10日 5:03
    • 回答としてマーク maechang 2016年5月12日 5:07
    2016年4月28日 1:50
  • 佐祐理さん、ご返信ありがとうございます。

    OmahaはClickOnceだったんですね!失礼致しました。

    仰るとおりですね。貴重なご意見、感謝いたします。

    ありがとうございました。

    2016年5月12日 5:11
  • とっちゃんさん、いつもありがとうございます。

    お返事が遅くなり、すみません。

    また、Slideshareもありがとうございます。

    私の方でも、いまWiXを試してみているのですが、XML形式ですが、思ったよりもシンプルで驚きました。

    WixEditも使えるとは思いますが、逆に使い難い気がするので、もしWiXでインストーラーを作るなら、以下の方法が現実的な着地点かなと思っていますが、とっちゃんさんのご意見もお聞きしたいです。

    ●WiXを使った現実的なインストーラー作成の方式

    ・WiXでインストーラーのUIカスタマイズやインスールする本体(msi)のアプリケーションの管理だけを行う

    ・インスールするアプリケーション本体は、Install Shield Limited Editionで作成する。(レジストリ書込み、アプリ本体インスール、デスクトップショートカット、プログラムメニュー追加など)

    →WiXでも作ることが出来るが、簡単にウィザード形式で進められるInstall Shieldに軍配。

    ※VCのランタイムのインストールは、Webからインスールするのであれば、WiX側で設定し、バンドルするのであれば、Install Shield Limited Editionでランタイムをマージする

    もし、それは違う!ということがあれば、是非ご指摘をお願い致します。

    2016年5月12日 11:30
  • WixEdit については、WiX でMSIのUIを作るときに出来上がる画面イメージを見ながら作れるので便利。

    という程度でいいと思います。Votive(VSのプロジェクト)を参照できないので残念ですが、事実上使えない製品ん。。。もったいないくらい性能はいいのですけどね。

    さて、本題の前にVC++ランタイムの話。

    VS2013までは、msm を使うか、vcredist.exe で独立したものを使うかの2択でしたが、VS2015は、msm+msuか、vredist.exe かになったため、msiのみでC++ランタイムまで提供ということができなくなりました。

    なので、エンドユーザー環境で事前にVCランタイムをインストールしておいてもらうか、ブートストラッパーを用意して、自身のインストールと一緒にインストールするかのどちらかしかありません。

    そのため、実質的には、ブートストラッパーなしという選択肢はないと思っていいでしょう。

    本題の、WiXを使った。。。ですが

    個々のmsiの作成については、ISの場合は、UIが必ずくっついてくるため、msi自体が大きくなります。

    それを許容できるなら特に問題はありませんが、IS特有の冗長な情報もくっついてるので、大きなプロダクトじゃないと許容できるか?というサイズになる場合もありますので、ブートストラッパーにWiXを使うなら、個々のmsiもWiXでいいと思うけど?というのが本音です。

    >WiXでインストーラーのUIカスタマイズやインスールする本体(msi)のアプリケーションの管理だけを行う

    は、Bundle(BootstrapperProject)を使って作成ですよね。個々のmsiについては前述のとおりです、このBundleもかなり曲者です。

    既定のUIを使い純粋なチェイナー(各種ランタイムを入れつつ本体も入れる)として使うなら、性能も高いですし、コンパクトにまとまっているので、お勧めできますが、自前UIとなると、ガラッと話が変わります。

    Bundleの自前UI(カスタムUXと呼ばれる)を作る場合、C++で作るか(Cでもいいですが、COMの知識は必須)、C#(VBでも作れると思いますが、C#の知識は必須)で作るかの選択肢があります。

    このうち、C++の場合、は全部作る(そのためのリファレンスはある)か、ある程度できているところをカスタマイズするか(リファレンスがなく、サンプルになるものもほとんどない)のどちらかになります。

    C#の場合は、WixUXというWiX自身のインストーラのカスタムUXのソースを見てそれを参考につくるしか選択肢がありません。そして残念なことにどれも全機能は使われていませんし、リファレンスもこれを読めば作れるというのには程遠い情報しか出ていません。

    一応。。。万人にお勧めできる仕組みではないということだけ付け加えておきます。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2016年5月12日 13:28