サービスプログラムのインストーラを作る(インストーラを作る)〜セットアッププロジェクトを作る(VS2015)

  • 2015.09.18 Friday
  • 12:35

前回、セットアッププロジェクトを有効にした続き
VS2008との比較も交えてセットアップを実際に作っていく。

とりあえず、セットアッププロジェクトを追加すると

サービス インストーラ

ビジュアルなウイザードが開くので、下のアイコンを左から順に設定していく
(自分でゴリゴリするなら閉じてしまっても構わない。もしウイザードを再度開く場合は、
セットアッププロジェクトのProject Assistantをダブルクリックすれば表示される)

サービス インストーラ

設定画面を見ていく前に、VS2008のセットアッププロジェクトのプロパティに該当するものは
1Organize Your Setup の General Information になる。

サービス インストーラ

このGeneral〜〜ファイルと上のウイザード、VS2008との関係も合わせて見ていくことにする。
General Informationと書くのが長いので、ウイザードの項目名後ろに【】が該当するプロパティ、
VS2008のプロパティに該当するものを《》で囲むことにする。

■Application Informationの設定
Application Informationをクリックして、次を入力する。

サービス インストーラ

company name【Publisher】《Manufacturer》に会社名等を入力する。
コントロールパネルの発行元などに表示される。

application name 【Product Name】《ProductName》に製品名を入力する。
作成されるsetup.exeの製品名、コントロールパネルなどに表示される。

application version【Product Version】《Version》に製品のバージョンを入力する。
作成されるsetup.exeの製品バージョン、コントロールパネルなどに表示される。

サービス インストーラ

サービス インストーラ

Web address【Publisher/Product URL】にURLを入力する。


■Installation Requirementsの設定
Installation Requirementsをクリックして、次を設定する。

サービス インストーラ

この設定は、5Define Setup Requirements and Actions の Requirementsファイルで設定できる。
Requirementsも【】で省略する。

サービス インストーラ

インストール可能なOSを識別する場合は、Yesを選択して、インストール対象のOSにチェックを入れる。
【System Hardware Requiements → OS Version】

フレームワークなど必要なアプリケーションがある場合は、Yesを選択して、該当するアプリにチェックを入れる。
【System Software Requirements】

InstallShieldを使う場合、VS2008のように自動で依存関係を補完してくれないようなので、
この部分と次に説明するRedistributablesで必要なフレームワークを選択しておく必要がある。

一応、補完はしてくれないが、ビルドすると次の警告が出てくる。

サービス インストーラ

-6245: One or more of the project's components contain .NET properties that require the .NET Framework 〜〜

要するに プログラムに必要なランタイム(.NET)がないからセットアップのリリース時に含めておくといいよ と言った感じである。


それはまあ分かっているのだが、どうやって含めるのか書いて欲しいところで、
いろいろ探してみると、2 Specify Application Data の Redistributables に現在InstallShieldが取得しているランタイム等の一覧が表示される。

サービス インストーラ

その中から必要なフレームワーク等を探してチェックを入れるとダウンロードが開始される(Needs to be downloadedなら)。


サービス インストーラ

Yesを押すとダウンロードが始まるが、
落としているか否かが分かりづらい。とりあえず、放置してしばらく待っていると
出力にダウンロードしたよとメッセージが出て、先ほどNeeds 〜〜だったところが Lnstalled Locally となる。

サービス インストーラ

ビルドしてみると、先ほどの-6245がなくなり、同時にビルドしたsetupにフレームワークのインストーラーも同包してくれる。

サービス インストーラ


さて、Requirements と Redistributables の関係をビルドして試して見た。

AssistantからではチェックのON/OFFしかできないが、
Requirements 側で見るとチェックなしとチェックあり(サービス インストーラ)の他に サービス インストーラ というのもあるので、
3種類試して見る。

サービス インストーラ

インストール環境は仮想環境(セットアップ前に切り戻せるので)の3.5.1が入っていないVistaで行ってみた。


●Redistributables のチェックなし
まず、Redistributables のチェック(フレームワークをセットアップに含めない)は入れずに、

サービス インストーラ

RequirementsだけチェックをON/OFFして、.Net3.5.1の入っていない環境でsetupを実行してみると、

チェックが入っていない場合とチェックが サービス インストーラ の場合はインストールできたが、
当たり前ではあるが、3.5.1が必要なので、プログラムは動作できなかった。

次に、チェックを入れる(サービス インストーラ)と、

サービス インストーラ

と警告が出てインストールが続行できなかった。
まぁ確かにフレームワークがなければ動かないので仕方がないかなと。

そこで、フレームワークを手動でインストールすることで問題なくインストールを完了できた。


●Redistributables のチェックあり
続いて、Redistributablesにチェックを入れてSetupにフレームワークを含めた状態で
 
サービス インストーラ サービス インストーラ

チェックなしとチェックあり(サービス インストーラ)を動かすと、
最初にフレームワークのインストールが始まり(インストールボタンをクリックで開始)、

サービス インストーラ

続いてプログラムのセットアップが開始され、プログラムも正常に起動できた。

で、もう1つのチェックを サービス インストーラ にしてセットアップすると、フレームワークまでは正常にインストールできたが、
プログラムのインストール時に例の警告が出て先へ進めなかった。

サービス インストーラ

既に3.5.1が入っている状態(アップデートで)にしてやってみたが、やはりセットアップできなかった。
また、手動で3.5.1を入れて試したがやはりセットアップが進めなかった。

あらかじめ3.5.1の入っているWin7でも試したが、やはりセットアップが進めなかった。


まとめると、
Redistributablesにチェックが入っていない(フレームワークをセットアップに含めない)と
プログラムはインストールできるが、手動でフレームワークをインストールする必要がある。

Redistributablesにチェックが入っているとフレームワークを入れてくれるが、
サービス インストーラ のときだけうまく動作しないようである。


とりあえず、Redistributablesにチェックを入れて、サービス インストーラ 以外を選択しておけば良さそうである。

ちょっと蛇足したが、次へ進む。


■Application Files
いよいよこの画面でプログラムの追加をする。

サービス インストーラ

この設定は、2 Specify Application Data の Files に該当し、実はこちらからの方がドラッグアンドドロップで追加できるので楽かもしれない。
先に、Application Filesの方で追加してみる。

まず、インストールしたいフォルダを左画面から選んで([INSTALLDIR]と書かれているフォルダ)、
右下のAdd Project Outputsをクリックする。
《セットアッププロジェクトを右クリック→出力→プロジェクト出力》

ダイアログからセットアップするプロジェクトを選んで、その中のプライマリ出力にチェックを入れ、OKする。

サービス インストーラ

これでインストール先に登録される。

サービス インストーラ

ちなみに、フレームワークの依存関係がちょっと分かりにくいところがあり、
さらに、DLLなど参照している場合も特にどこにも表示がされないので、大丈夫かなと不安になる。

とりあえず、ビルドしてお試しインストールしてみると、
例えば設定(configファイル)や自作のdllも一緒に作成したプログラムと同じところにインストールしてくれるようなので、
プライマリ出力でプログラムに必要なものはインストールしてくれるらしい。

サービス インストーラ

仮にインストールされない場合は、必要なファイルを必要な場所に登録しておけばよい。

さて、同じ部分のSpecify Application Data の Files について続けて書いておくと、
まず、Filesを開いて、左上のソリューションからインストールするプログラムを選択しておく。
(右側にプライマリ出力などが表示される)

続いて左下からインストール先([INSTALLDIR])を選択する。

開いた右下の画面に向けて、右上のプライマリ出力をドラッグアンドドロップしてあげれば追加完了である。

サービス インストーラ

Application ShortcutsとApplication Registryはこの記事では飛ばします。
必要があれば追加します。


■Installation Interview
インストール時のダイアログを設定します。

必要なダイアログがあればYesを選択します。

サービス インストーラ

これの設定は、4 Customize the Setup Appearance の Dialogs が対応します。
《セットアッププロジェクトを右クリック→表示→ユーザーインターフェイス》
Dialogsも【】で省略する。

サービス インストーラ

Agreement Dialog【License Agreement】 ライセンスを表示して同意をチェックする画面を表示させる。
Company Name and User Name【Customer Information】 ユーザー名や企業名などを入力させる画面を表示させる。
installation location of your application【Destination Folder】 インストール先の確認、変更させる画面を表示させる。
launch your application【Setup Complete Success】インストール完了後にプログラムを立ち上げる動作を追加する。

となる。

その他必要なダイアログはDialogsから選択します。

以上でアシスタント設定が完了しコンパイルできる状態になりますが、
おそらく日本語環境の場合、エラーが発生します。

サービス インストーラ

-7184: The DefaultDir column of the Directory table includes characters that are not available on code page 1252 : 全角文字〜〜
-7185: The English translation for string identifier ID_STRING1 includes characters that are not available on code page 1252.

などなど

これを解決するには、結局上の方で紹介したGeneral Infoemationのチューニングが必要になってくる。
また、サービスプログラムの登録はVS2008のようにProjectInstallerを認識してくれないため、
こちらも別途設定が必要となってくる。

サービス インストーラ

ということで、続きの方で細かい設定を書いていく


関連記事
サービスプログラムのインストーラを作る(InstallShieldの有効化)〜セットアッププロジェクトのインストール(VS2015)
サービスプログラムのインストーラを作る〜セットアッププロジェクト(VS2008)

 

まず、General Informationを開いて、
プロパティ一覧の中のSetup Languageを日本語に変更してあげる。

サービス インストーラ

これだけで、先ほどの1784、1785のエラーが消える。

ついでなので、他も変更していく

Publisher、Product Name、Product Versionは最初の方で書いた通りである。

●Product Code
これはVS2008にもあったCodeである。

VS2008と同じように同じコードの場合でどのようになるか試して見ると、
同じsetup.exeであれば、既にインストールしているとVS2008同様にプログラムの変更ダイアログが出てくる

サービス インストーラ

同じコードでもう一度ビルドすると、やはりこちらも同じようなメッセージが表示される。

サービス インストーラ

問題はVS2008ではmsiファイルがあってそのファイルのコード部分を書き換えれば
再ビルドしたsetupでも上のメッセージが出てきたが、
InstallShieldのsetupではそれができないので注意が必要である。

ちなみに、setup.exeの中身にmsiファイルが格納されているのだが、
そのmsiを取り出して、コードを書き換えればVS2008と同じようになる。

サービス インストーラ
取り出したmsi


さて、VS2008と同じようにバージョンを変更(しなくても良いが識別として)して、
コードも変更すると、

サービス インストーラ

バージョン違いで入れることもできる。

●Upgrade Code
やはりVS2008とおなじ感じと考えて良い。


●INSTALLDIR
プログラムをインストールする場所をここで指定するようです。
《セットアッププロジェクトを右クリックし、表示→ファイルシステム→アプリケーションフォルダのプロパティ→DefaultLocation》

デフォルトの [ProgramFilesFolder]My Product Name で指定すると、

C:¥Program Files¥My Product Name

という構成でプログラムがインストールされます。
VS2008と同じように、Dドライブに変更してみたいとするなら、
 
D:¥work¥program¥TestProgram¥TestProgram.exe

こんな感じに変更する。
 
D:¥work¥program¥TestProgram

VS2008との違いは、[ProductName]という置換してくれるプロパティがどうやら用意されていないようなので(unknown errorとされる)、
直接プログラム名等の名前まで入力することになるようだ。

サービス インストーラ



●Title、Subject、Author、Keywords、Summary Information Stream Comments《Description》
これらは上にも書いたsetup.exeの中にあるmsiファイルのプロパティになる。
setup.exeを解凍ツールなどで取り出さない限りは直接見えないところでもあるので、
デフォルトのままでも良いかもしれない。

サービス インストーラ

●Disable Change/Remove/Repair Button
このプロパティをYesにすると、コントロールパネルの操作でアンインストール(Remove)、変更(Change)、修復(Repair)ができなくなる。

サービス インストーラ

全部消してしまった場合、コンパネからアンインストールができなくなる。
アンインストールはsetupを起動すると例の画面が出てくるので、そこから行う。
ただし、上の通りsetupをリビルドしてしまうと、この画面が出せなくなるので、注意が必要となる。

サービス インストーラ

●Tag Creator ID
ソフトウエアの資産管理番号だそうで、これを入れた方がいいよという警告が表示される。

サービス インストーラ
-7235: InstallShield could not create the software identification tag because the Tag Creator ID setting in the General Information view is empty.

とりあえず、ID tagを作らないということで、Use Software Identification Tag を Noにしておけば、警告が消える。

サービス インストーラ


General Informationの設定はだいたいこんなところで、
その他のプロパティは自分は今のところ使わないので、他力ちゃんします。


■サービスプログラムのインストール
こんなに長い記事になっているのに、本題がこんなところにあります。すみません。
で、VS2008の場合は、ProjectInstallerを追加することで、あとはセットアップで全自動登録してくれましたが、
InstallShieldではProjectInstallerは全く見てくれないため、セットアップを作ってみてもサービスへ登録はしてくれません。

ちなみに、ProjectInstallerを設定した場合は、VSに付属のInstallUtil.exeでコマンドから登録することが可能である。

参考URL
サービスをインストールおよびアンインストールする

試しに実行してみると、ProjectInstallerで設定した内容で登録してくれる。

サービス インストーラ

さて、話を戻して、InstallShieldでのサービス登録であるが、

2 Configure the Target System の Services を開いて、
サービス インストーラ

左のServicesを右クリックでAdd Serviceを選択する。

サービス インストーラ

ダイアログから登録するプログラムを選択する。ここではプライマリ出力になる。

サービス インストーラ

Servicesに追加されるので、サービス名を変更しておく。《ServiceName》
ここがデフォルトの場合、MyService1で登録されてしまうので、忘れずに変更する。

サービス インストーラ
なお、Display Nameに値を入力すると、サービスの名前カラムの表示でそちらが優先されるようだが、
基本的にサービスの登録名はこちらで設定した名前となるので、
MyService1以外に設定しておかないと他のプログラムを登録しようとしても登録できないことが起こる可能性がある。
(コマンドで sc query 設定したサービス名 で検索してみると分かる)

無難なのは、Display Nameを設定しないことだと思う。
(その場合は、表示名にサービス名が表示される)


サービスを選択すると、右側にプロパティが出てくるので、設定をしていく。

User Nameというプロパティがあるが、
説明にあるとおり、ここを空白にしておけばをLocal Systemで登録してくれるようだ《Account》

それと、一番下のStart on Install がYesになっているとインストール後に自動起動するので、
もし設定を変更してから起動したいなどあればNoにしておくと良い

その他のプロパティは左のように設定すると右のようになるということで省略、または他力ちゃんする。
 
サービス インストーラ サービス インストーラ


ということで、サービスのインストール方法でしたが、
もし、InstallShieldでインストールするだけであればProjectInstaller(を作っていれば)は削除してしまって構わない
ただ、setupが正しく動作しなかったときも想定して設定だけしておくのも良いかもしれない。



■追記
エラーが出てお試しインストールもsetupからのインストールもできなくなった

サービス インストーラ
エラー1316 次のファイルを読み込み中に、ネットワークエラーが発生しました:〜〜〜Downloaded Installations¥{...}¥default.msi

で、何が原因かと頭のなかを巡らせると、どうやらINSTALLDIRでunknown errorを出した際に、Product Nameが空白になってしまったことが原因らしい。
空白になるとProduct Nameでのmsiが作成できないので、default.msiとなるようだ。

サービス インストーラ

しかも、厄介なのが、インストールもできなければアンインストールもできない
どうやら空白でインストールしたため認識できないようである。

唯一の手がかりはdefault.msiなので、とりあえず、Product Nameにdefaultと入力してビルド、インストールしてみたら・・・

サービス インストーラ

インストールできて、アンインストールも問題なくできました。
もう一度アンインストールしてみると
 
サービス インストーラ サービス インストーラ

セットアップされていないよということでうまく消えたようです。
あとはProduct Nameを元に戻してビルドすれば元通りです。

この一件で分かったこと、
お試しインストール(プロジェクトを右クリック→Install)すると、

C:¥Users¥ユーザー名¥AppData¥Local¥Downloaded Installations ※¥は半角

の下にmsiがテンポラリとして残るようだ。
ただし、Installしたあと削除するとUninstallができなくなるので、残置されている不要なインストーラのみ削除した方がよい

 
コメント
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
<< November 2019 >>

search this site.

よく使う、検索される投稿

categories

■Google AD■

アマゾン

楽天

selected entries

archives

recent comment

  • H3 SRB-3燃焼試験
    rockecco (08/30)
  • H3 SRB-3燃焼試験
    綿棒 (08/29)
  • ブレークポイントは現在の設定ではヒットしません〜ソリューションのデバッグ
    B.T (08/09)
  • 山の白い看板
    rockecco (06/06)
  • 山の白い看板
    田舎人 (05/08)
  • あの、クラスとかメソッドとかプルダウンできるバーって〜Visual Studio 2015
    rockecco (04/27)
  • あの、クラスとかメソッドとかプルダウンできるバーって〜Visual Studio 2015
    NS (04/27)
  • MacでBlu-ray編 〜 BD-Rを焼く その3 サポセン編
    rockecco (04/23)
  • Shurikenで添付ファイルまとめて保存したい
    rockecco (04/23)
  • MacでBlu-ray編 〜 BD-Rを焼く その3 サポセン編
    たかなママ (04/22)

recent trackback

profile


※当ブログはリンクフリーですが、 取材や雑誌等で掲載される場合は、事前にお知らせください

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM