トップ回答者
インストール、アンインストール後のOS再起動について

質問
-
以下のようなアプリケーションの開発を引き継ぐことになりましたが、前任者は既に不在、引継ぎ資料も皆無ということで質問させていただきます。
アプリケーションは、インストーラーがVisual Studio 2008 ProfessionalでのMS Installer形式(?)で、.NET Framework3.5で動作するWindowsサービスおよびGUIの実行ファイルが含まれます。動作としてはLAN経由で外部端末とのデータ通信を行うものになります。
私の環境で評価をしていたときには、インストール・アンインストールしてもOSを再起動せずに、正常に動いておりましたが、先日別の環境でバージョンアップ(旧バージョンアンインストール後、新バージョンインストール)された別の方から、OSを再起動しないと通信がうまくいかなかったと連絡をもらいました。
そこで、質問ですが、上記のようなアプリの場合、WindowsOSは再起動を推奨しているものでしょうか。
わかりづらいかもしれませんが、ご回答お願いいたします。
回答
-
アプリケーションは、インストーラーがVisual Studio 2008 ProfessionalでのMS Installer形式(?)で、.NET Framework3.5で動作する“WindowsサービスおよびGUIの実行ファイル”が含まれます。動作としてはLAN経由で外部端末とのデータ通信を行うものになります。
私の環境で評価をしていたときには、“インストール・アンインストールしてもOSを再起動せずに、正常に動いて”おりましたが、先日別の環境で“バージョンアップ(旧バージョンアンインストール後、新バージョンインストール)された別の方から、OSを再起動しないと通信がうまくいかなかった”と連絡をもらいました。
※引用符追加
引用符で囲った箇所の内容では、次のように推測されます。
- Windows Service は、常に実行している。
- 通信部分は、Windows Service が担当している。
- インストーラーは、バージョンアップ時に Windows Service を停止しない。
この様な条件を満たしているなら、再ログオンか、再起動が必要です。ログオンで済むかどうかは、Windows Service の起動条件がどの様になっているかによります。
インストーラーは、使用中のファイルを上書きしません。Windows Service が実行中であるということは、使用中であるということです。そのような場合、次回起動時にファイルを上書きするようにマークします。従って、再起動が必要です。インストーラーで Windows Service を停止してからコピーするようにコードを書けば、再起動は不要になるでしょう。
Jitta@わんくま同盟
- 回答としてマーク みのりと 2012年6月16日 14:14
-
括弧内に書かれているように、「書き換わるレジストリの内容によります」。
インストーラーは、どのように作成されているのでしょうか。私が知っているのは InstallShield 12 という、とても古いバージョンのみなので、他の製品やバージョンであればもっと詳しい人が通りかかるのを待たなければなりません。IS であれば、再起動が必要かどうかを判断できる変数があったように思います。それを見れば、要否の判断ができます。
Jitta@わんくま同盟
すべての返信
-
アプリケーションは、インストーラーがVisual Studio 2008 ProfessionalでのMS Installer形式(?)で、.NET Framework3.5で動作する“WindowsサービスおよびGUIの実行ファイル”が含まれます。動作としてはLAN経由で外部端末とのデータ通信を行うものになります。
私の環境で評価をしていたときには、“インストール・アンインストールしてもOSを再起動せずに、正常に動いて”おりましたが、先日別の環境で“バージョンアップ(旧バージョンアンインストール後、新バージョンインストール)された別の方から、OSを再起動しないと通信がうまくいかなかった”と連絡をもらいました。
※引用符追加
引用符で囲った箇所の内容では、次のように推測されます。
- Windows Service は、常に実行している。
- 通信部分は、Windows Service が担当している。
- インストーラーは、バージョンアップ時に Windows Service を停止しない。
この様な条件を満たしているなら、再ログオンか、再起動が必要です。ログオンで済むかどうかは、Windows Service の起動条件がどの様になっているかによります。
インストーラーは、使用中のファイルを上書きしません。Windows Service が実行中であるということは、使用中であるということです。そのような場合、次回起動時にファイルを上書きするようにマークします。従って、再起動が必要です。インストーラーで Windows Service を停止してからコピーするようにコードを書けば、再起動は不要になるでしょう。
Jitta@わんくま同盟
- 回答としてマーク みのりと 2012年6月16日 14:14
-
Jitta様 回答ありがとうございます。
・Windows Service は、常に実行している。
→アプリケーション上でのボタン押下により起動と停止を行える仕様です。
・通信部分は、Windows Service が担当している。
→仰るとおり通信部分はサービスが担当しています。
・インストーラーは、バージョンアップ時に Windows Service を停止しない。
→インストーラーでは、Windowsサービスの停止は無いようです。
Windowsサービスが実行中のままの可能性を考慮して、インストーラーでのサービス停止処理を追加するか、再起動を要求するようにしたいと思います。
また、こちらで継続して確認していたところ、インストール後にレジストリの内容が変わっておりました。(本アプリで使用するWindowsサービスに関連するもののようでした。)
これは、Jitta様の仰る「再起動が必要」という内容に含まれるものでしょうか。(書き換わるレジストリの内容によって、OSの再起動を推奨したほうが良いのでしょうか。)
質問内容が変わってしまいましたが、よろしければ回答をお願い致します。
-
括弧内に書かれているように、「書き換わるレジストリの内容によります」。
インストーラーは、どのように作成されているのでしょうか。私が知っているのは InstallShield 12 という、とても古いバージョンのみなので、他の製品やバージョンであればもっと詳しい人が通りかかるのを待たなければなりません。IS であれば、再起動が必要かどうかを判断できる変数があったように思います。それを見れば、要否の判断ができます。
Jitta@わんくま同盟