【質問の背景】
・インターネットサイトで利用するActiveXをVC6SP6で開発しています。
・既にリリースして、ユーザに利用して頂いているActiveXを、
機能変更に伴い更新する必要があります。
・機能変更後のActiveXのDLLをCABにまとめて、開発環境のWebサーバに
配置したところ、新しいActiveXがインストールされるのですが、
OSの再起動を促されます。
(再起動しないと、古いActiveXが表示されます)
【質問】
①OS再起動の回避
IEで利用するActiveXの更新時にはOSの再起動が必ず必要になるのでしょうか?
OSの再起動が発生する条件をご存知の方がいれば、教えて頂けないでしょうか。
②ActiveXのCLSIDの変更方法
ActiveX更新時のOS再起動が避けられないのであれば、オブジェクト名やCLSIDを別にして、新たなActiveXをインストールする方法があると考えて
います。
新規にプロジェクトを作り直せば変更されるのは分かっているのですが、
かなりの作業量が必要と思っています。
CLSIDなど識別子関連で変更が必要なもののみを変更する方法をご存知
の方がいらっしゃいましたら、教えて頂けないでしょうか。
自己レスです。①の原因がほぼ分かりました。
IEが既に該当のActiveXをロードしている状態で、
そのActiveXを更新しようとしていたので、
OSの再起動が促されていたようです。
通常ならそのような状態は稀なのですが、
ActiveXがインストールされているかを判断して画面表示内容を
変えるために、new ActiveXObject("xxx")の戻り値を評価する
という方法を取っていたため、そのせいでActiveX更新前に必ず
以前のActiveXがロードされているという状況となっていました。
new ActiveXObject("xxx")の戻り値を評価する以外の方法で、
ActiveXのインストール有無を判断する方法はないものでしょうか?
ツイート | ![]() |