この InstallShield コードは初めてです。キーを削除しようとしています
RegDBDeleteKey("Nrs_Log");
しかし、削除できず、セットアップは正常に実行されています。レジストリ キーを削除する他の方法を誰かが提案できますか。
この InstallShield コードは初めてです。キーを削除しようとしています
RegDBDeleteKey("Nrs_Log");
しかし、削除できず、セットアップは正常に実行されています。レジストリ キーを削除する他の方法を誰かが提案できますか。
RegDBDeleteKey() が失敗する理由は多数あります。あなたの投稿には問題を特定するのに十分な情報がないため、これ以上の情報がなければ推測することさえできません. 詳細情報を取得する方法は次のとおりです。RegDBDeleteKey() 呼び出しの戻り値を取得する必要があるため、何が起こっているのかを知ることができます。
以下のコードは、戻り値を取得し、それをテキスト エラーに変換して、結果を表示します。
result = RegDBDeleteKey("Nrs_Log");
if(result < 0) then
SprintfBox(WARNING, "RegDBDelete...", "Failed to delete registry key.\n Error number: %d \n %s", result, FormatMessage(result) );
endif;
実際のエラーがわかったら、問題を修正するか、Google で詳細を確認できます。
特定のレジストリ ハイブを削除する方法については、以下の InstallShield InstallScript を参照してください。レジストリ キーを削除する前に、レジストリ キーが存在するかどうかを確認する場合:
function DeleteRegistryKeys(hMSI)
STRING keyToDelete;
begin
keyToDelete = "\\SOFTWARE\\MyRegistryHive\\";
//comment below line if your target root hive is HKEY_CLASSES_ROOT
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); //Set this if you want to change the registry root to HKEY_LOCAL_MACHINE.
REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY; //Set this only if you want to search WOW64 hive of HKEY_LOCAL_MACHINE if you've a 32-bit installer running on a 64 bit operating system.
if (RegDBKeyExist (keyToDelete) > 0) then
SprintfMsiLog ("registry keys found. Going to delete registry keys");
if (RegDBDeleteKey (keyToDelete) < 0) then
SprintfMsiLog ("Failed to delete registry keys.");
else
SprintfMsiLog ("Registry keys deleted successfully.");
endif;
else
SprintfMsiLog ("Registry keys not found.");
endif;
end;