- PR -

アンインストール時にレジストリ非削除

1
投稿者投稿内容
MO
会議室デビュー日: 2003/07/30
投稿数: 2
投稿日時: 2003-07-30 10:38
初めて質問させていただきます。
よろしくお願いします。

VB.netで開発をしているのですが、
インストーラにてレジストリを作成しています。
インストール時には、起動条件とレジストリの[Condition]プロパティを使用して、
対象レジストリが既にあれば上書きしない、
なければレジストリ作成、といった処理をしています。

アンインストール時には、常に、作成したレジストリを削除しないようにしたいのですが、
可能なものでしょうか?

レジストリキーの[DeleteAtUninstall]プロパティで実現できるのかと
思っていたのですが、
[DeleteAtUninstall]=True → キー内に文字列が残っていてもキーごと強制削除[DeleteAtUninstall]=False → キー内に文字列が残っていれば削除しないが、何も残らなければ削除
となるようなのです。
また、文字列には[DeleteAtUninstall]プロパティに値するようなものがなく、
文字列の削除or削除しない が選択できない気がするのですが。。。

どなたかご存知の方がいらっしゃいましたら、
ご教授いただければと思います。
よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-01 16:03
こんにちは。
引用:

MOさんの書き込み (2003-07-30 10:38) より:

VB.netで開発をしているのですが、
インストーラにてレジストリを作成しています。
インストール時には、起動条件とレジストリの[Condition]プロパティを使用して、
対象レジストリが既にあれば上書きしない、
なければレジストリ作成、といった処理をしています。

アンインストール時には、常に、作成したレジストリを削除しないようにしたいのですが、
可能なものでしょうか?


 『"Designed for Windows XP" アプリケーション仕様書 2.3 日本語版』に、こうあります。
引用:

「2.7 [プログラムの追加と削除] プログラムを正しくサポートすること」より:
アプリケーションのアンインストーラは、正しく、完全にアプリケーションを削除できなければなりません。
このセクションで明記されている例外を除き、アプリケーションは次を削除しなければなりません。
? 共有されていないすべてのアプリケーション ファイルとフォルダ
? 参照カウント (refcount) がゼロになった共有アプリケーション ファイル
? 他のプログラムと共有している可能性があるキー以外のレジストリ エントリ
? インストール時にアプリケーションが作成した [スタート] メニュー以下のすべてのショートカット
? アンインストーラ自体 (共有コンポーネント以外の場合)



 付属のインストーラはロゴプログラム対象のアプリケーションが作れるようにするためのものですから、『他のプログラムと共有している可能性があるキー以外のレジストリ エントリ』を、『完全に…削除でき』るように作ってあると思います。[DeleteAtUninstall]プロパティは、他のプログラムと共有している可能性があっても削除するかどうか、という指定ではないでしょうか。
MO
会議室デビュー日: 2003/07/30
投稿数: 2
投稿日時: 2003-08-04 10:34
Jitta様。

返答が遅くなって申し訳ありません。
ありがとうございます。


>付属のインストーラはロゴプログラム対象のアプリケーションが作れるようにするためのもの?
>ですから、『他のプログラムと共有している可能性があるキー以外のレジストリ エントリ』を、
>『完全に…削除でき』るように作ってあると思います。[DeleteAtUninstall]プロパティは、
>他のプログラムと共有している可能性があっても削除するかどうか、という指定ではないでしょうか。
なるほど。
作ったレジストリを全て削除する方がインストーラとして正しいということなのですね。
オプションで削除するorしないを選べたりしないものかと思っていたのですが、
Jittaさんの引用された『"Designed for Windows XP" アプリケーション仕様書 2.3 日本語版』を見ると、そういう類のものでもないようですね。

レジストリを残すには、インストール時に
インストーラにレジストリを作らせないようにするしかないのかもしれないですね。
他の方法を検討してみます。

これで少し前に進めました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)