DOBON.NET DOBON.NETプログラミング掲示板過去ログ

MSIでインストール時にキーに書き込めない

環境/言語:[Microsoft Visual C++ .NET]
分類:[インストーラ]

Microsoft Visual C++ .NETにてセットアッププロジェクトであるアプリケーションのインストーラ(MSI)を作成してインストールをいくつかのPCで試したところ以下のようなメッセージが表示されインストールできない現象が発生しました。
「値 DefaultFeatureをキーUNKNOWN\Features\xxxxxに書き込めません。そのキーへの十分なアクセス権があることを確認するか、またはサポート担当者へ問い合わせてください。」
Win98などの古いPCで主に起こったりしているようですが、原因・起こる環境が特定できておりません。

このインストーラーではHKEY_CURRENT_USER\Software\アプリケーション名\以下にインストールディレクトリ情報などをインストール時に書き込んでいます。

この現象の原因と回避策をご存知の方がおられましたらご教授願えないでしょうか?

よろしくお願いします。
■No18508に返信(mdrさんの記事)
はじめまして>ALL
とっちゃんです。

> 「値 DefaultFeatureをキーUNKNOWN\Features\xxxxxに書き込めません。そのキーへの十分なアクセス権があることを確認するか、またはサポート担当者へ問い合わせてください。」
> Win98などの古いPCで主に起こったりしているようですが、原因・起こる環境が特定できておりません。
>
どのくらいの数のファイルをインストールしていますか?
具体的な数はわからないのですが、ずいぶんと前に、VSのセットアップで多数のファイルをインストールしようとしたら、このエラーが出たという書き込みを見たことがあります(もちろん、対象は9x系です)。

このエラーは、9x系OSのレジストリへの書き込みサイズの最大サイズに起因する問題のため、回避策としては、一つの Feature に多数の Component を入れないということになるのですが、VSセットアッププロジェクトはそもそも Feature だの Component だのの部分を見せない(完全に隠ぺいすることにより、インストーラの複雑性を回避している)ため、現実的な回避策としては、別の Feature や Component を扱えるインストーラ作成ツールを利用するということになります。

なので、結論から言うと、InstallShield なり、WiX なりのもっとしっかりとしたインストーラ作成ツールを利用するということになるかと思います。
貴重な情報本当にありがとうございます!

> どのくらいの数のファイルをインストールしていますか?
> 具体的な数はわからないのですが、ずいぶんと前に、VSのセットアップで多数のファイルをインストールしようとしたら、このエラーが出たという書き込みを見たことがあります(もちろん、対象は9x系です)。

確かに1000近いファイルをインストールしています。

> このエラーは、9x系OSのレジストリへの書き込みサイズの最大サイズに起因する問題のため、回避策としては、一つの Feature に多数の Component を入れないということになるのですが、VSセットアッププロジェクトはそもそも Feature だの Component だのの部分を見せない(完全に隠ぺいすることにより、インストーラの複雑性を回避している)ため、現実的な回避策としては、別の Feature や Component を扱えるインストーラ作成ツールを利用するということになります。
>
> なので、結論から言うと、InstallShield なり、WiX なりのもっとしっかりとしたインストーラ作成ツールを利用するということになるかと思います。
>

対象は9x系とありますが、それ以外では起こらないものなのでしょうか?
なかなか該当PCを手に入れることができず、再現が難しいです。

今回の用途ではInstallShieldまでは必要ないかと考えていたのですが、こちらもテストしてみたいと思います。
■No18521に返信(mdrさんの記事)
> 確かに1000近いファイルをインストールしています。
このあたりだと、もうダメな気がします。
元ネタがMSのニュースグループでとっくの昔にアーカイブ逝きなので、具体的なサイズは忘れてしまいましたが、1000は行っていなかったような気がします。

>
> 対象は9x系とありますが、それ以外では起こらないものなのでしょうか?
> なかなか該当PCを手に入れることができず、再現が難しいです。
>
当該エラーに関して言えば、9x系だけです。確かMSDNライブラリにも乗っていたと
思うんですが、もしかしたら今はなくなっちゃてるのかなぁ...9x系なんて事実上無視されてるしw

> 今回の用途ではInstallShieldまでは必要ないかと考えていたのですが、こちらもテストしてみたいと思います。
>
VSセットアッププロジェクトが想定しているインストーラは、1ソリューション内にある出力データ(コンテンツを含む)程度になっています。

手軽に作れるメリットはあるものの、デメリットとして莫大な制約(msiのインストール機能のカスタマイズ可能範囲全体からすれば、1割あるかどうかという程度)があります。
ま、そんなものと割り切っていれば、特に気にはなりませんけどね(^^;
■No18530に返信(とっちゃんさんの記事)
> 当該エラーに関して言えば、9x系だけです。確かMSDNライブラリにも乗っていたと
http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_registry_limitations_on_windows_95_98_me.asp

に出てました(英語ですが)。
msiがらみでまともな日本語資料はないので、そっちは探してません(^^;

DOBON.NET | プログラミング道 | プログラミング掲示板