3

高度なインストーラーバージョン(8.9)単純な.Netインストーラークラスを開発しました。その特別な機能は、*iniファイルに基づいて特定のUIを提供することです。私の知る限り、AdvancedInstallerはそのようなことをサポートしていません。私が間違っていたら私を訂正してください!しかし、それは私の質問のポイントではありません。ユーザーの選択に応じて、インストーラークラスはレジストリに特定の*.regファイルをマージします。その目的で使用するコードは次のとおりです。

Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents=false;
proc.StartInfo.FileName="regedit.exe";
proc.StartInfo.Arguments = " \"" + regFilePath + "\"";
proc.StartInfo.UseShellExecute = true;
proc.Start();

したがって、ある種のsample.regファイルがある場合

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\NIKOLETA]
...

インストーラークラスをWindowsインストーラー(VSに組み込まれている)にインポートすると、sample.regが正常にマージされ、NIKOLETAキーがHKEY_CURRENT_USER\SOFTWAREの下に表示されます。残念ながら、インストーラークラスがアドバンストインストーラーでインポートされると、sample.regが再度マージされますが、目的の場所ではなく、NIKOLETAキーがHKEY_USERS.DEFAULT\SOFTWAREの下に表示されます。AdvancedInstallerのHKEY_USERSのデフォルトパスはHKEY_USERS.DEFAULT\Software[Manufacturer][ProductName]であると通知されました。しかし、それが.Netインストーラークラスにどのようにそしてなぜ影響するのでしょうか?その問題をどのように回避すれば、*。regファイルを正しくマージできますか?よろしくお願いします!

4

1 に答える 1

4

HKEY_USERS.DEFAULTこれは実際にはローカルシステムアカウントのプロファイルであるため、カスタムアクションが偽装なしで遅延として実行されるように設定されている場合、つまり完全な管理者権限を持つSYSTEMアカウントで実行されるように設定されている場合、レジストリエントリはそこにリダイレクトされる可能性があります。 。

また、条件に基づいて特定のレジストリエントリを作成するだけの場合は、[レジストリ]ページからエントリを作成し、[組織]ページからコンポーネントにインストール条件を設定できます。

于 2012-11-13T07:45:20.650 に答える