From ec201051e37ef2f347a89a28faa9de273d5f6954 Mon Sep 17 00:00:00 2001 From: Stephen Pohl Date: Mon, 29 Sep 2014 11:51:08 -0700 Subject: [PATCH] Mac v2 signing - Bug 1046924 - Move updates directory out of the .app bundle. r=rstrong --- .../mozapps/update/updater/launchchild_osx.mm | 2 +- toolkit/xre/nsUpdateDriver.cpp | 2 +- toolkit/xre/nsXREDirProvider.cpp | 40 +++++++++++++++++-- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/toolkit/mozapps/update/updater/launchchild_osx.mm b/toolkit/mozapps/update/updater/launchchild_osx.mm index 903544cc12a1..9e4e08d372fe 100644 --- a/toolkit/mozapps/update/updater/launchchild_osx.mm +++ b/toolkit/mozapps/update/updater/launchchild_osx.mm @@ -83,7 +83,7 @@ LaunchMacPostProcess(const char* aAppBundle) NSString* iniPath = [NSString stringWithUTF8String:aAppBundle]; iniPath = - [iniPath stringByAppendingPathComponent:@"Contents/MacOS/updater.ini"]; + [iniPath stringByAppendingPathComponent:@"Contents/Resources/updater.ini"]; NSFileManager* fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:iniPath]) { diff --git a/toolkit/xre/nsUpdateDriver.cpp b/toolkit/xre/nsUpdateDriver.cpp index f38d705a11c3..48480958717e 100644 --- a/toolkit/xre/nsUpdateDriver.cpp +++ b/toolkit/xre/nsUpdateDriver.cpp @@ -341,7 +341,7 @@ CopyUpdaterIntoUpdateDir(nsIFile *greDir, nsIFile *appDir, nsIFile *updateDir, { // Copy the updater application from the GRE and the updater ini from the app #if defined(XP_MACOSX) - if (!CopyFileIntoUpdateDir(greDir, kUpdaterApp, updateDir)) + if (!CopyFileIntoUpdateDir(appDir, kUpdaterApp, updateDir)) return false; #else if (!CopyFileIntoUpdateDir(greDir, kUpdaterBin, updateDir)) diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp index c525e0eb1ac5..be4a8601c04a 100644 --- a/toolkit/xre/nsXREDirProvider.cpp +++ b/toolkit/xre/nsXREDirProvider.cpp @@ -231,7 +231,7 @@ nsXREDirProvider::GetUserProfilesLocalDir(nsIFile** aResult, NS_IMETHODIMP nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent, - nsIFile** aFile) + nsIFile** aFile) { nsresult rv; @@ -1031,8 +1031,42 @@ nsXREDirProvider::GetUpdateRootDir(nsIFile* *aResult) rv = appFile->GetParent(getter_AddRefs(updRoot)); NS_ENSURE_SUCCESS(rv, rv); -#ifdef XP_WIN +#ifdef XP_MACOSX + nsCOMPtr appRootDirFile; + nsCOMPtr localDir; + nsAutoString appDirPath; + if (NS_FAILED(appFile->GetParent(getter_AddRefs(appRootDirFile))) || + NS_FAILED(appRootDirFile->GetPath(appDirPath)) || + NS_FAILED(GetUserDataDirectoryHome(getter_AddRefs(localDir), true))) { + return NS_ERROR_FAILURE; + } + int32_t dotIndex = appDirPath.RFind(".app"); + if (dotIndex == kNotFound) { + dotIndex = appDirPath.Length(); + } + appDirPath = Substring(appDirPath, 1, dotIndex - 1); + + bool hasVendor = gAppData->vendor && strlen(gAppData->vendor) != 0; + if (hasVendor || gAppData->name) { + if (NS_FAILED(localDir->AppendNative(nsDependentCString(hasVendor ? + gAppData->vendor : + gAppData->name)))) { + return NS_ERROR_FAILURE; + } + } else if (NS_FAILED(localDir->AppendNative(NS_LITERAL_CSTRING("Mozilla")))) { + return NS_ERROR_FAILURE; + } + + if (NS_FAILED(localDir->Append(NS_LITERAL_STRING("updates"))) || + NS_FAILED(localDir->AppendRelativePath(appDirPath))) { + return NS_ERROR_FAILURE; + } + + NS_ADDREF(*aResult = localDir); + return NS_OK; + +#elif XP_WIN nsAutoString pathHash; bool pathHashResult = false; bool hasVendor = gAppData->vendor && strlen(gAppData->vendor) != 0; @@ -1121,7 +1155,7 @@ nsXREDirProvider::GetUpdateRootDir(nsIFile* *aResult) rv = updRoot->AppendRelativePath(programName); NS_ENSURE_SUCCESS(rv, rv); -#endif +#endif // XP_WIN #endif NS_ADDREF(*aResult = updRoot); return NS_OK;