ほぼ日のBGDL中に実行した場合アプリが存在すると判定されてしまうのでam::GetProgramInfosでアプリの存在を確認するように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@686 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2012-04-10 02:58:30 +00:00
parent e5d5e566aa
commit bd9814674d

View File

@ -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;