高度なインストーラーバージョン(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ファイルを正しくマージできますか?よろしくお願いします!