diff --git a/trunk/PersonalDataEraser/main.cpp b/trunk/PersonalDataEraser/main.cpp index d095e43..9defc2a 100644 --- a/trunk/PersonalDataEraser/main.cpp +++ b/trunk/PersonalDataEraser/main.cpp @@ -51,7 +51,6 @@ namespace { const char* const NAND_TWL_ARCHIVE_NAME = "twln:"; - const char* const NAND_TWL_KENJ_DIR_PATHNAME = "twln:/title/00030004/4b454e4a"; const char* const NAND_TWL_KENJ_SAVE_DATA_PATHNAME = "twln:/title/00030004/4b454e4a/data/Public.sav"; const nn::ProgramId NAND_TWL_KENJ_PROGRAM_ID = 0x000480044b454e4aULL; @@ -187,6 +186,11 @@ namespace { { nn::Result result; + // アプリが存在するかどうか確かめる + nn::am::ProgramInfo info; + result = nn::am::GetProgramInfos(&info, nn::fs::MEDIA_TYPE_NAND, &NAND_TWL_KENJ_PROGRAM_ID, 1); + NN_UTIL_RETURN_IF_FAILED(result); + // TWl領域をマウントする result = nn::fs::MountSpecialArchive( NAND_TWL_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_TWL_NAND ); if( result.IsFailure() ) @@ -195,42 +199,30 @@ namespace { return result; } - // アプリが存在するかどうか確かめる - nn::fs::Directory dir; - if( dir.TryInitialize(NAND_TWL_KENJ_DIR_PATHNAME).IsFailure() ) + // アプリ存在フラグを上げる + s_IsAppExist = true; + + // ほぼ日健康手帳のセーブデータを乱数で埋める + result = FillRandamDataToKENJSaveData(); + if (result.IsFailure()) { - dir.Finalize(); + nn::fs::Unmount("twln:"); + return result; } else { - // アプリ存在フラグを上げる - s_IsAppExist = true; - - // ここでfinalizeしておかないと、DeleteProgramでフェータルになる。 - dir.Finalize(); - - // ほぼ日健康手帳のセーブデータを乱数で埋める - result = FillRandamDataToKENJSaveData(); - if( result.IsFailure() ) - { - nn::fs::Unmount( "twln:" ); - return result; - } - else - { - s_IsSaveDataCleanSuccess = true; - } - - // ほぼ日健康手帳を消す - result = nn::am::DeleteUserProgram(nn::fs::MEDIA_TYPE_NAND, NAND_TWL_KENJ_PROGRAM_ID); - if( result.IsSuccess() ) - { - s_IsAppDeleteSuccess = true; - } - - UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result); + s_IsSaveDataCleanSuccess = true; } + // ほぼ日健康手帳を消す + result = nn::am::DeleteUserProgram(nn::fs::MEDIA_TYPE_NAND, NAND_TWL_KENJ_PROGRAM_ID); + if (result.IsSuccess()) + { + s_IsAppDeleteSuccess = true; + } + + UTIL_RETURN_IF_NOT_AM_NOT_FOUND(result); + nn::fs::Unmount( "twln:" ); return result;