diff --git a/mozilla/xpinstall/src/nsInstall.cpp b/mozilla/xpinstall/src/nsInstall.cpp index 844afcc16c2..989d4f56822 100644 --- a/mozilla/xpinstall/src/nsInstall.cpp +++ b/mozilla/xpinstall/src/nsInstall.cpp @@ -549,11 +549,16 @@ PRInt32 nsInstall::AddSubcomponent(const nsString& aJarSource, PRInt32* aReturn) { - //FIX aFolder needs to be found! + if(mPackageFolder == "null") + { + *aReturn = SaveError( nsInstall::PACKAGE_FOLDER_NOT_SET ); + return NS_OK; + } + return AddSubcomponent("", "", aJarSource, - "", + mPackageFolder, "", PR_FALSE, aReturn); @@ -945,7 +950,11 @@ nsInstall::SetPackageFolder(const nsString& aFolder) PRInt32 nsInstall::StartInstall(const nsString& aUserPackageName, const nsString& aRegistryPackageName, const nsString& aVersion, PRInt32* aReturn) { - *aReturn = nsInstall::SUCCESS; + char szRegPackagePath[MAXREGPATHLEN]; + char* szRegPackageName = aRegistryPackageName.ToNewCString(); + + *szRegPackagePath = '0'; + *aReturn = nsInstall::SUCCESS; ResetError(); @@ -966,6 +975,17 @@ nsInstall::StartInstall(const nsString& aUserPackageName, const nsString& aRegis return NS_OK; } + if(REGERR_OK == VR_GetPath(szRegPackageName, MAXREGPATHLEN, szRegPackagePath)) + { + mPackageFolder = szRegPackagePath; + } + else + { + mPackageFolder = "null"; + } + + if(szRegPackageName) + delete [] szRegPackageName; if (mVersionInfo != nsnull) delete mVersionInfo; diff --git a/mozilla/xpinstall/src/nsInstall.h b/mozilla/xpinstall/src/nsInstall.h index 84d7a4d7f92..3684661a6cd 100644 --- a/mozilla/xpinstall/src/nsInstall.h +++ b/mozilla/xpinstall/src/nsInstall.h @@ -115,6 +115,7 @@ class nsInstall PATCH_BAD_CHECKSUM_TARGET = -221, PATCH_BAD_CHECKSUM_RESULT = -222, UNINSTALL_FAILED = -223, + PACKAGE_FOLDER_NOT_SET = -224, GESTALT_UNKNOWN_ERR = -5550, GESTALT_INVALID_ARGUMENT = -5551, @@ -221,6 +222,7 @@ class nsInstall void* mJarFileData; nsString mInstallArguments; + nsString mPackageFolder; PRBool mUserCancelled;