зеркало из https://github.com/mozilla/gecko-dev.git
Getting closer to milestone 2. More additions to the functionality of
xpinstall. This is not part of the build process yet.
This commit is contained in:
Родитель
2c0336ef71
Коммит
9b13163cbb
|
@ -62,7 +62,7 @@ interface Install
|
|||
|
||||
|
||||
long AddSubcomponent( in wstring regName,
|
||||
in InstallVersion version,
|
||||
in wstring version,
|
||||
in wstring jarSource,
|
||||
in InstallFolder folder,
|
||||
in wstring targetName,
|
||||
|
@ -84,7 +84,7 @@ interface Install
|
|||
InstallFolder GetComponentFolder( in wstring regName,
|
||||
in wstring subdirectory);
|
||||
|
||||
InstallFolder GetFolder(in InstallFolder targetFolder,
|
||||
InstallFolder GetFolder(in wstring targetFolder,
|
||||
in wstring subdirectory);
|
||||
|
||||
long GetLastError();
|
||||
|
@ -110,7 +110,4 @@ interface Install
|
|||
|
||||
long Uninstall( in wstring packageName);
|
||||
|
||||
long ExtractFileFromJar(in wstring jarfile, in wstring finalFile, out wstring tempFile);
|
||||
|
||||
|
||||
};
|
|
@ -25,7 +25,6 @@
|
|||
#include "nsIScriptContext.h"
|
||||
|
||||
class nsIDOMInstallFolder;
|
||||
class nsIDOMInstallVersion;
|
||||
|
||||
#define NS_IDOMINSTALL_IID \
|
||||
{ 0x18c2f988, 0xb09f, 0x11d2, \
|
||||
|
@ -80,7 +79,7 @@ public:
|
|||
|
||||
NS_IMETHOD AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn)=0;
|
||||
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn)=0;
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn)=0;
|
||||
|
||||
NS_IMETHOD DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn)=0;
|
||||
|
||||
|
@ -96,7 +95,7 @@ public:
|
|||
|
||||
NS_IMETHOD GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn)=0;
|
||||
|
||||
NS_IMETHOD GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn)=0;
|
||||
NS_IMETHOD GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn)=0;
|
||||
|
||||
NS_IMETHOD GetLastError(PRInt32* aReturn)=0;
|
||||
|
||||
|
@ -113,8 +112,6 @@ public:
|
|||
NS_IMETHOD StartInstall(const nsString& aUserPackageName, const nsString& aPackageName, const nsString& aVersion, PRInt32 aFlags, PRInt32* aReturn)=0;
|
||||
|
||||
NS_IMETHOD Uninstall(const nsString& aPackageName, PRInt32* aReturn)=0;
|
||||
|
||||
NS_IMETHOD ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aReturn)=0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -123,7 +120,7 @@ public:
|
|||
NS_IMETHOD GetRegPackageName(nsString& aRegPackageName); \
|
||||
NS_IMETHOD AbortInstall(); \
|
||||
NS_IMETHOD AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn); \
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn); \
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn); \
|
||||
NS_IMETHOD DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn); \
|
||||
NS_IMETHOD DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn); \
|
||||
NS_IMETHOD DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn); \
|
||||
|
@ -131,7 +128,7 @@ public:
|
|||
NS_IMETHOD FinalizeInstall(PRInt32* aReturn); \
|
||||
NS_IMETHOD Gestalt(const nsString& aSelector, PRInt32* aReturn); \
|
||||
NS_IMETHOD GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn); \
|
||||
NS_IMETHOD GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn); \
|
||||
NS_IMETHOD GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn); \
|
||||
NS_IMETHOD GetLastError(PRInt32* aReturn); \
|
||||
NS_IMETHOD GetWinProfile(nsIDOMInstallFolder* aFolder, const nsString& aFile, PRInt32* aReturn); \
|
||||
NS_IMETHOD GetWinRegistry(PRInt32* aReturn); \
|
||||
|
@ -140,7 +137,6 @@ public:
|
|||
NS_IMETHOD SetPackageFolder(nsIDOMInstallFolder* aFolder); \
|
||||
NS_IMETHOD StartInstall(const nsString& aUserPackageName, const nsString& aPackageName, const nsString& aVersion, PRInt32 aFlags, PRInt32* aReturn); \
|
||||
NS_IMETHOD Uninstall(const nsString& aPackageName, PRInt32* aReturn); \
|
||||
NS_IMETHOD ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aReturn); \
|
||||
|
||||
|
||||
|
||||
|
@ -149,7 +145,7 @@ public:
|
|||
NS_IMETHOD GetRegPackageName(nsString& aRegPackageName) { return _to##GetRegPackageName(aRegPackageName); } \
|
||||
NS_IMETHOD AbortInstall() { return _to##AbortInstall(); } \
|
||||
NS_IMETHOD AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn) { return _to##AddDirectory(aRegName, aVersion, aJarSource, aFolder, aSubdir, aForceMode, aReturn); } \
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn) { return _to##AddSubcomponent(aRegName, aVersion, aJarSource, aFolder, aTargetName, aForceMode, aReturn); } \
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn) { return _to##AddSubcomponent(aRegName, aVersion, aJarSource, aFolder, aTargetName, aForceMode, aReturn); } \
|
||||
NS_IMETHOD DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn) { return _to##DeleteComponent(aRegistryName, aReturn); } \
|
||||
NS_IMETHOD DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn) { return _to##DeleteFile(aFolder, aRelativeFileName, aReturn); } \
|
||||
NS_IMETHOD DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn) { return _to##DiskSpaceAvailable(aFolder, aReturn); } \
|
||||
|
@ -157,7 +153,7 @@ public:
|
|||
NS_IMETHOD FinalizeInstall(PRInt32* aReturn) { return _to##FinalizeInstall(aReturn); } \
|
||||
NS_IMETHOD Gestalt(const nsString& aSelector, PRInt32* aReturn) { return _to##Gestalt(aSelector, aReturn); } \
|
||||
NS_IMETHOD GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn) { return _to##GetComponentFolder(aRegName, aSubdirectory, aReturn); } \
|
||||
NS_IMETHOD GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn) { return _to##GetFolder(aTargetFolder, aSubdirectory, aReturn); } \
|
||||
NS_IMETHOD GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aReturn) { return _to##GetFolder(aTargetFolder, aSubdirectory, aReturn); } \
|
||||
NS_IMETHOD GetLastError(PRInt32* aReturn) { return _to##GetLastError(aReturn); } \
|
||||
NS_IMETHOD GetWinProfile(nsIDOMInstallFolder* aFolder, const nsString& aFile, PRInt32* aReturn) { return _to##GetWinProfile(aFolder, aFile, aReturn); } \
|
||||
NS_IMETHOD GetWinRegistry(PRInt32* aReturn) { return _to##GetWinRegistry(aReturn); } \
|
||||
|
@ -166,7 +162,6 @@ public:
|
|||
NS_IMETHOD SetPackageFolder(nsIDOMInstallFolder* aFolder) { return _to##SetPackageFolder(aFolder); } \
|
||||
NS_IMETHOD StartInstall(const nsString& aUserPackageName, const nsString& aPackageName, const nsString& aVersion, PRInt32 aFlags, PRInt32* aReturn) { return _to##StartInstall(aUserPackageName, aPackageName, aVersion, aFlags, aReturn); } \
|
||||
NS_IMETHOD Uninstall(const nsString& aPackageName, PRInt32* aReturn) { return _to##Uninstall(aPackageName, aReturn); } \
|
||||
NS_IMETHOD ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aReturn) { return _to##ExtractFileFromJar(aJarfile, aFinalFile, aTempFile, aReturn); } \
|
||||
|
||||
|
||||
extern nsresult NS_InitInstallClass(nsIScriptContext *aContext, void **aPrototype);
|
||||
|
|
|
@ -76,6 +76,9 @@ OBJS = \
|
|||
.\$(OBJDIR)\nsSoftwareUpdateStream.obj \
|
||||
.\$(OBJDIR)\nsInstallErrorMessages.obj \
|
||||
.\$(OBJDIR)\nsInstallFile.obj \
|
||||
.\$(OBJDIR)\nsInstallDelete.obj \
|
||||
.\$(OBJDIR)\nsInstallExecute.obj \
|
||||
.\$(OBJDIR)\nsInstallPatch.obj \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
|
|
@ -24,12 +24,16 @@
|
|||
#include "nsIDOMInstallVersion.h"
|
||||
|
||||
#include "nsInstallFile.h"
|
||||
#include "nsInstallDelete.h"
|
||||
#include "nsInstallExecute.h"
|
||||
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsIFactory.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
#include "nsVector.h"
|
||||
#include "nsHashtable.h"
|
||||
|
||||
#include "prmem.h"
|
||||
#include "pratom.h"
|
||||
|
@ -41,6 +45,7 @@ static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
|
|||
static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID);
|
||||
|
||||
static NS_DEFINE_IID(kIInstall_IID, NS_IDOMINSTALL_IID);
|
||||
static NS_DEFINE_IID(kIInstallFolder_IID, NS_IDOMINSTALLFOLDER_IID);
|
||||
|
||||
|
||||
|
||||
|
@ -145,18 +150,182 @@ nsInstall::GetRegPackageName(nsString& aRegPackageName)
|
|||
NS_IMETHODIMP
|
||||
nsInstall::AbortInstall()
|
||||
{
|
||||
nsInstallObject* ie;
|
||||
if (mInstalledFiles != nsnull)
|
||||
{
|
||||
PRUint32 i=0;
|
||||
for (i=0; i < mInstalledFiles->GetSize(); i++)
|
||||
{
|
||||
ie = (nsInstallObject *)mInstalledFiles->Get(i);
|
||||
if (ie == nsnull)
|
||||
continue;
|
||||
ie->Abort();
|
||||
}
|
||||
}
|
||||
|
||||
CleanUp();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//FIX: Should we use empty strings or nulls for parameters that do not need values.
|
||||
NS_IMETHODIMP
|
||||
nsInstall::AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn)
|
||||
{
|
||||
nsInstallFile* ie = nsnull;
|
||||
PRInt32 result;
|
||||
|
||||
if ( aJarSource == "null" || aFolder == nsnull)
|
||||
{
|
||||
*aReturn = SaveError(nsIDOMInstall::SUERR_INVALID_ARGUMENTS);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
result = SanityCheck();
|
||||
|
||||
if (result != nsIDOMInstall::SU_SUCCESS)
|
||||
{
|
||||
*aReturn = SaveError( result );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsString* qualifiedRegName = nsnull;
|
||||
|
||||
if ( aRegName == "" )
|
||||
{
|
||||
// Default subName = location in jar file
|
||||
qualifiedRegName = GetQualifiedRegName( aJarSource );
|
||||
}
|
||||
else
|
||||
{
|
||||
qualifiedRegName = GetQualifiedRegName( aRegName );
|
||||
}
|
||||
|
||||
if (qualifiedRegName == nsnull)
|
||||
{
|
||||
*aReturn = SaveError( SUERR_BAD_PACKAGE_NAME );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsString subdirectory(aSubdir);
|
||||
|
||||
if (subdirectory != "")
|
||||
{
|
||||
subdirectory.Append("/");
|
||||
}
|
||||
|
||||
PRBool bInstall;
|
||||
|
||||
nsVector paths;
|
||||
|
||||
result = ExtractDirEntries(aJarSource, &paths);
|
||||
|
||||
PRInt32 pathsUpperBound = paths.GetUpperBound();
|
||||
|
||||
if (result != nsIDOMInstall::SU_SUCCESS)
|
||||
{
|
||||
*aReturn = SaveError( result );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
for (int i=0; i< pathsUpperBound; i++)
|
||||
{
|
||||
nsInstallVersion* newVersion = new nsInstallVersion();
|
||||
|
||||
nsString *fullRegName = new nsString(*qualifiedRegName);
|
||||
fullRegName->Append("/");
|
||||
fullRegName->Append(*(nsString *)paths[i]);
|
||||
|
||||
char* fullRegNameCString = fullRegName->ToNewCString();
|
||||
|
||||
if ( (aForceMode == PR_FALSE) && (aVersion == "null") &&
|
||||
(VR_ValidateComponent(fullRegNameCString) == 0))
|
||||
{
|
||||
VERSION versionStruct;
|
||||
VR_GetVersion( fullRegNameCString, &versionStruct);
|
||||
|
||||
//fix: when we have overloading!
|
||||
nsInstallVersion* oldVer = new nsInstallVersion();
|
||||
oldVer->Init(versionStruct.major,
|
||||
versionStruct.minor,
|
||||
versionStruct.release,
|
||||
versionStruct.build);
|
||||
|
||||
|
||||
newVersion->Init(aVersion);
|
||||
|
||||
PRInt32 areTheyEqual;
|
||||
newVersion->CompareTo(oldVer, &areTheyEqual);
|
||||
delete newVersion;
|
||||
|
||||
bInstall = ( areTheyEqual > 0 );
|
||||
|
||||
if (oldVer)
|
||||
delete oldVer;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// file doesn't exist or "forced" install
|
||||
bInstall = PR_TRUE;
|
||||
}
|
||||
|
||||
delete fullRegNameCString;
|
||||
|
||||
if (bInstall)
|
||||
{
|
||||
nsString *newJarSource = new nsString(aJarSource);
|
||||
newJarSource->Append("/");
|
||||
newJarSource->Append(*(nsString *)paths[i]);
|
||||
|
||||
nsString* newSubDir;
|
||||
|
||||
if (subdirectory != "")
|
||||
{
|
||||
newSubDir = new nsString(subdirectory);
|
||||
newSubDir->Append(*(nsString*)paths[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
newSubDir = new nsString(*(nsString*)paths[i]);
|
||||
}
|
||||
|
||||
ie = new nsInstallFile( this,
|
||||
*fullRegName,
|
||||
newVersion,
|
||||
*newJarSource,
|
||||
aFolder,
|
||||
*newSubDir,
|
||||
aForceMode,
|
||||
&result);
|
||||
delete fullRegName;
|
||||
delete newJarSource;
|
||||
delete newSubDir;
|
||||
delete newVersion;
|
||||
|
||||
if (result == SU_SUCCESS)
|
||||
{
|
||||
result = ScheduleForInstall( ie );
|
||||
}
|
||||
else
|
||||
{
|
||||
delete ie;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (qualifiedRegName != nsnull)
|
||||
delete qualifiedRegName;
|
||||
|
||||
*aReturn = SaveError( result );
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsInstall::AddSubcomponent(const nsString& aRegName,
|
||||
nsIDOMInstallVersion* aVersion,
|
||||
const nsString& aVersion,
|
||||
const nsString& aJarSource,
|
||||
nsIDOMInstallFolder* aFolder,
|
||||
const nsString& aTargetName,
|
||||
|
@ -164,13 +333,14 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
|||
PRInt32* aReturn)
|
||||
{
|
||||
nsInstallFile* ie;
|
||||
nsString* qualifiedRegName;
|
||||
nsString* qualifiedRegName = nsnull;
|
||||
|
||||
PRInt32 errcode = SU_SUCCESS;
|
||||
|
||||
if ( aJarSource == "null" || aFolder == nsnull)
|
||||
{
|
||||
return nsIDOMInstall::SUERR_INVALID_ARGUMENTS;
|
||||
*aReturn = SaveError( nsIDOMInstall::SUERR_INVALID_ARGUMENTS );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRInt32 result = SanityCheck();
|
||||
|
@ -199,11 +369,14 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
|||
}
|
||||
|
||||
/* Check for existence of the newer version */
|
||||
|
||||
|
||||
nsInstallVersion *newVersion = new nsInstallVersion();
|
||||
newVersion->Init(aVersion);
|
||||
|
||||
PRBool versionNewer = PR_FALSE;
|
||||
char* qualifiedRegNameString = qualifiedRegName->ToNewCString();
|
||||
|
||||
if ( (aForceMode == PR_FALSE ) && (aVersion != nsnull) && ( VR_ValidateComponent( qualifiedRegNameString ) == 0 ) )
|
||||
if ( (aForceMode == PR_FALSE ) && (aVersion != "null") && ( VR_ValidateComponent( qualifiedRegNameString ) == 0 ) )
|
||||
{
|
||||
VERSION versionStruct;
|
||||
|
||||
|
@ -217,12 +390,12 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
|||
versionStruct.build);
|
||||
|
||||
PRInt32 areTheyEqual;
|
||||
aVersion->CompareTo((nsInstallVersion*)oldVersion, &areTheyEqual);
|
||||
newVersion->CompareTo((nsInstallVersion*)oldVersion, &areTheyEqual);
|
||||
|
||||
if ( areTheyEqual != nsIDOMInstallVersion::SU_EQUAL )
|
||||
versionNewer = PR_TRUE;
|
||||
|
||||
if( oldVersion )
|
||||
if ( oldVersion )
|
||||
delete oldVersion;
|
||||
}
|
||||
else
|
||||
|
@ -236,42 +409,94 @@ nsInstall::AddSubcomponent(const nsString& aRegName,
|
|||
|
||||
if (versionNewer)
|
||||
{
|
||||
PRInt32 error;
|
||||
|
||||
ie = new nsInstallFile( this,
|
||||
*qualifiedRegName,
|
||||
aVersion,
|
||||
newVersion,
|
||||
aJarSource,
|
||||
aFolder,
|
||||
aTargetName,
|
||||
aForceMode,
|
||||
&error );
|
||||
&errcode );
|
||||
|
||||
if (error == SU_SUCCESS)
|
||||
if (errcode == SU_SUCCESS)
|
||||
{
|
||||
error = ScheduleForInstall( ie );
|
||||
errcode = ScheduleForInstall( ie );
|
||||
}
|
||||
|
||||
if (error != SU_SUCCESS)
|
||||
else
|
||||
{
|
||||
*aReturn = SaveError( error );
|
||||
return NS_OK;
|
||||
}
|
||||
delete ie;
|
||||
}
|
||||
}
|
||||
|
||||
if (qualifiedRegName != nsnull)
|
||||
delete qualifiedRegName;
|
||||
|
||||
if (newVersion != nsnull)
|
||||
delete newVersion;
|
||||
|
||||
*aReturn = SaveError( errcode );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsInstall::DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn)
|
||||
{
|
||||
PRInt32 result = SanityCheck();
|
||||
|
||||
if (result != nsIDOMInstall::SU_SUCCESS)
|
||||
{
|
||||
*aReturn = SaveError( result );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
nsString* qualifiedRegName = GetQualifiedRegName( aRegistryName);
|
||||
|
||||
if (qualifiedRegName == nsnull)
|
||||
{
|
||||
*aReturn = SaveError( SUERR_BAD_PACKAGE_NAME );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsInstallDelete* id = new nsInstallDelete(this, NULL, *qualifiedRegName, &result);
|
||||
if (result == SU_SUCCESS)
|
||||
{
|
||||
result = ScheduleForInstall( id );
|
||||
}
|
||||
|
||||
delete qualifiedRegName;
|
||||
|
||||
*aReturn = SaveError(result);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsInstall::DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn)
|
||||
{
|
||||
return NS_OK;
|
||||
PRInt32 result = SanityCheck();
|
||||
|
||||
if (result != nsIDOMInstall::SU_SUCCESS)
|
||||
{
|
||||
*aReturn = SaveError( result );
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsInstallDelete* id = new nsInstallDelete(this, aFolder, aRelativeFileName, &result);
|
||||
|
||||
if (result == SU_SUCCESS)
|
||||
{
|
||||
result = ScheduleForInstall( id );
|
||||
}
|
||||
|
||||
if (result == SUERR_FILE_DOES_NOT_EXIST)
|
||||
{
|
||||
result = SU_SUCCESS;
|
||||
}
|
||||
|
||||
*aReturn = SaveError(result);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -283,6 +508,22 @@ nsInstall::DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn)
|
|||
NS_IMETHODIMP
|
||||
nsInstall::Execute(const nsString& aJarSource, const nsString& aArgs, PRInt32* aReturn)
|
||||
{
|
||||
PRInt32 result = SanityCheck();
|
||||
|
||||
if (result != nsIDOMInstall::SU_SUCCESS)
|
||||
{
|
||||
*aReturn = SaveError( result );
|
||||
return NS_OK;
|
||||
}
|
||||
nsInstallExecute* ie = new nsInstallExecute(this, aJarSource, aArgs, &result);
|
||||
|
||||
if (result == SU_SUCCESS)
|
||||
{
|
||||
result = ScheduleForInstall( ie );
|
||||
}
|
||||
|
||||
*aReturn = SaveError(result);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -348,24 +589,41 @@ nsInstall::FinalizeInstall(PRInt32* aReturn)
|
|||
NS_IMETHODIMP
|
||||
nsInstall::Gestalt(const nsString& aSelector, PRInt32* aReturn)
|
||||
{
|
||||
*aReturn = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsInstall::GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder)
|
||||
{
|
||||
*aFolder = nsnull;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsInstall::GetFolder(nsIDOMInstallFolder* targetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder)
|
||||
nsInstall::GetFolder(const nsString& targetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder)
|
||||
{
|
||||
return NS_OK;
|
||||
nsInstallFolder* spec = nsnull;
|
||||
*aFolder = nsnull;
|
||||
|
||||
// FIX: What was this for? if ((! targetFolder.EqualsIgnoreCase("Installed")) && (! targetFolder.EqualsIgnoreCase("file:///")) )
|
||||
{
|
||||
spec = new nsInstallFolder();
|
||||
spec->Init(targetFolder, aSubdirectory, mUserPackageName);
|
||||
}
|
||||
|
||||
nsresult result = spec->QueryInterface(kIInstallFolder_IID, (void**)aFolder);
|
||||
|
||||
if (result != NS_OK)
|
||||
*aFolder = nsnull;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsInstall::GetLastError(PRInt32* aReturn)
|
||||
{
|
||||
*aReturn = mLastError;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -458,9 +716,10 @@ nsInstall::StartInstall(const nsString& aUserPackageName, const nsString& aPacka
|
|||
delete mVersionInfo;
|
||||
|
||||
mVersionInfo = new nsInstallVersion();
|
||||
mVersionInfo->Init(aVersion); /* this will go away when we have params in constructs in XPCOM */
|
||||
mVersionInfo->Init(aVersion);
|
||||
|
||||
mInstalledFiles = new nsVector();
|
||||
mPatchList = new nsHashtable();
|
||||
|
||||
/* this function should also check security!!! */
|
||||
*aReturn = OpenJARFile();
|
||||
|
@ -515,12 +774,34 @@ nsInstall::Uninstall(const nsString& aPackageName, PRInt32* aReturn)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
////////////////////////////////////////
|
||||
|
||||
PRInt32
|
||||
nsInstall::ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* error)
|
||||
{
|
||||
*error = SU_SUCCESS;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nsInstall::AddPatch(nsHashKey *aKey, nsString* fileName)
|
||||
{
|
||||
if (mPatchList != nsnull)
|
||||
{
|
||||
mPatchList->Put(aKey, fileName);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsInstall::GetPatch(nsHashKey *aKey, nsString* fileName)
|
||||
{
|
||||
if (mPatchList != nsnull)
|
||||
{
|
||||
fileName = (nsString*) mPatchList->Get(aKey);
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// Private Methods
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
@ -673,7 +954,7 @@ nsInstall::GetQualifiedRegName(const nsString& name )
|
|||
if (mUserPackageName != "")
|
||||
{
|
||||
qualifiedRegName = new nsString(mUserPackageName);
|
||||
qualifiedRegName += '/';
|
||||
qualifiedRegName->Append("/");
|
||||
qualifiedRegName->Append(name);
|
||||
}
|
||||
else
|
||||
|
@ -789,6 +1070,12 @@ nsInstall::CleanUp(void)
|
|||
delete (mInstalledFiles);
|
||||
mInstalledFiles = nsnull;
|
||||
}
|
||||
|
||||
if (mPatchList)
|
||||
{
|
||||
// do I need to delete every entry?
|
||||
delete mPatchList;
|
||||
}
|
||||
|
||||
mPackageName = ""; // used to see if StartInstall() has been called
|
||||
|
||||
|
@ -805,6 +1092,13 @@ void
|
|||
nsInstall::CloseJARFile(void)
|
||||
{
|
||||
}
|
||||
|
||||
PRInt32
|
||||
nsInstall::ExtractDirEntries(const nsString& directory, nsVector *paths)
|
||||
{
|
||||
return SU_SUCCESS;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -8,15 +8,17 @@
|
|||
#include "nsIScriptObjectOwner.h"
|
||||
|
||||
#include "nsVector.h"
|
||||
#include "nsHashtable.h"
|
||||
|
||||
#include "nsIDOMInstall.h"
|
||||
#include "nsInstallObject.h"
|
||||
|
||||
#include "nsSoftwareUpdate.h"
|
||||
|
||||
#include "nsInstallFolder.h"
|
||||
#include "nsInstallVersion.h"
|
||||
|
||||
#include "nsInstallObject.h"
|
||||
|
||||
class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
|
||||
{
|
||||
public:
|
||||
|
@ -35,7 +37,7 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
|
|||
|
||||
NS_IMETHOD AbortInstall();
|
||||
NS_IMETHOD AddDirectory(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aSubdir, PRBool aForceMode, PRInt32* aReturn);
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, nsIDOMInstallVersion* aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);
|
||||
NS_IMETHOD AddSubcomponent(const nsString& aRegName, const nsString& aVersion, const nsString& aJarSource, nsIDOMInstallFolder* aFolder, const nsString& aTargetName, PRBool aForceMode, PRInt32* aReturn);
|
||||
NS_IMETHOD DeleteComponent(const nsString& aRegistryName, PRInt32* aReturn);
|
||||
NS_IMETHOD DeleteFile(nsIDOMInstallFolder* aFolder, const nsString& aRelativeFileName, PRInt32* aReturn);
|
||||
NS_IMETHOD DiskSpaceAvailable(nsIDOMInstallFolder* aFolder, PRInt32* aReturn);
|
||||
|
@ -43,7 +45,7 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
|
|||
NS_IMETHOD FinalizeInstall(PRInt32* aReturn);
|
||||
NS_IMETHOD Gestalt(const nsString& aSelector, PRInt32* aReturn);
|
||||
NS_IMETHOD GetComponentFolder(const nsString& aRegName, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder);
|
||||
NS_IMETHOD GetFolder(nsIDOMInstallFolder* aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder);
|
||||
NS_IMETHOD GetFolder(const nsString& aTargetFolder, const nsString& aSubdirectory, nsIDOMInstallFolder** aFolder);
|
||||
NS_IMETHOD GetLastError(PRInt32* aReturn);
|
||||
NS_IMETHOD GetWinProfile(nsIDOMInstallFolder* aFolder, const nsString& aFile, PRInt32* aReturn);
|
||||
NS_IMETHOD GetWinRegistry(PRInt32* aReturn);
|
||||
|
@ -54,9 +56,10 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
|
|||
NS_IMETHOD Uninstall(const nsString& aPackageName, PRInt32* aReturn);
|
||||
|
||||
|
||||
/*needs to be noscript*/
|
||||
NS_IMETHOD ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aError);
|
||||
|
||||
PRInt32 ExtractFileFromJar(const nsString& aJarfile, const nsString& aFinalFile, nsString& aTempFile, PRInt32* aError);
|
||||
void AddPatch(nsHashKey *aKey, nsString* fileName);
|
||||
void GetPatch(nsHashKey *aKey, nsString* fileName);
|
||||
|
||||
private:
|
||||
void *mScriptObject;
|
||||
|
@ -72,7 +75,9 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
|
|||
|
||||
nsInstallVersion* mVersionInfo; /* Component version info */
|
||||
nsInstallFolder* mPackageFolder;
|
||||
|
||||
nsVector* mInstalledFiles;
|
||||
nsHashtable* mPatchList;
|
||||
|
||||
PRInt32 mLastError;
|
||||
|
||||
|
@ -89,8 +94,10 @@ class nsInstall: public nsIScriptObjectOwner, public nsIDOMInstall
|
|||
|
||||
PRInt32 OpenJARFile(void);
|
||||
void CloseJARFile(void);
|
||||
PRInt32 ExtractDirEntries(const nsString& directory, nsVector *paths);
|
||||
|
||||
PRInt32 ScheduleForInstall(nsInstallObject* ob);
|
||||
PRInt32 ScheduleForInstall(nsInstallObject* ob);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include "VerReg.h"
|
||||
#include "nsInstallFile.h"
|
||||
|
||||
#include "nsIDOMInstall.h"
|
||||
#include "nsInstall.h"
|
||||
#include "nsIDOMInstallFolder.h"
|
||||
#include "nsIDOMInstallVersion.h"
|
||||
|
||||
|
@ -60,7 +60,7 @@ static PRBool endsWith(nsString* str, char* string_to_find)
|
|||
inJarLocation - location inside the JAR file
|
||||
inFinalFileSpec - final location on disk
|
||||
*/
|
||||
nsInstallFile::nsInstallFile(nsIDOMInstall* inInstall,
|
||||
nsInstallFile::nsInstallFile(nsInstall* inInstall,
|
||||
const nsString& inVRName,
|
||||
nsIDOMInstallVersion* inVInfo,
|
||||
const nsString& inJarLocation,
|
||||
|
@ -135,8 +135,6 @@ nsInstallFile::~nsInstallFile()
|
|||
*/
|
||||
PRInt32 nsInstallFile::Prepare()
|
||||
{
|
||||
char *errorMsg = NULL;
|
||||
|
||||
if (mInstall == NULL || mFinalFile == NULL || mJarLocation == NULL)
|
||||
return nsIDOMInstall::SUERR_INVALID_ARGUMENTS;
|
||||
|
||||
|
@ -153,7 +151,7 @@ PRInt32 nsInstallFile::Prepare()
|
|||
*/
|
||||
PRInt32 nsInstallFile::Complete()
|
||||
{
|
||||
int err;
|
||||
PRInt32 err;
|
||||
int refCount;
|
||||
int rc;
|
||||
|
||||
|
@ -226,6 +224,8 @@ PRInt32 nsInstallFile::Complete()
|
|||
{
|
||||
refCount = 0;
|
||||
}
|
||||
//FIX need to delete char* created by .ToNewCString(). There should be 5 of them. mcmullen told me that
|
||||
// he was working on a nsAutoString that would do this.
|
||||
|
||||
if (!mUpgradeFile)
|
||||
{
|
||||
|
@ -234,7 +234,7 @@ PRInt32 nsInstallFile::Complete()
|
|||
rc = 1 + refCount;
|
||||
nsString tempString;
|
||||
mVersionInfo->ToString(tempString);
|
||||
VR_Install( vr_name, final_file, (char*)(PRUnichar*) tempString, PR_FALSE );
|
||||
VR_Install( vr_name, final_file, tempString.ToNewCString(), PR_FALSE );
|
||||
VR_SetRefCount( vr_name, rc );
|
||||
}
|
||||
else
|
||||
|
@ -243,14 +243,14 @@ PRInt32 nsInstallFile::Complete()
|
|||
{
|
||||
nsString tempString;
|
||||
mVersionInfo->ToString(tempString);
|
||||
VR_Install( vr_name, final_file, (char*)(PRUnichar*) tempString, PR_FALSE);
|
||||
VR_Install( vr_name, final_file, tempString.ToNewCString(), PR_FALSE);
|
||||
VR_SetRefCount( vr_name, 2 );
|
||||
}
|
||||
else
|
||||
{
|
||||
nsString tempString;
|
||||
mVersionInfo->ToString(tempString);
|
||||
VR_Install( vr_name, final_file, (char*)(PRUnichar*) tempString, PR_FALSE );
|
||||
VR_Install( vr_name, final_file, tempString.ToNewCString(), PR_FALSE );
|
||||
VR_SetRefCount( vr_name, 1 );
|
||||
}
|
||||
}
|
||||
|
@ -261,14 +261,14 @@ PRInt32 nsInstallFile::Complete()
|
|||
{
|
||||
nsString tempString;
|
||||
mVersionInfo->ToString(tempString);
|
||||
VR_Install( vr_name, final_file, (char*)(PRUnichar*) tempString, PR_FALSE );
|
||||
VR_Install( vr_name, final_file, tempString.ToNewCString(), PR_FALSE );
|
||||
VR_SetRefCount( vr_name, 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
nsString tempString;
|
||||
mVersionInfo->ToString(tempString);
|
||||
VR_Install( vr_name, final_file, (char*)(PRUnichar*) tempString, PR_FALSE );
|
||||
VR_Install( vr_name, final_file, tempString.ToNewCString(), PR_FALSE );
|
||||
VR_SetRefCount( vr_name, 0 );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
#include "nsInstallObject.h"
|
||||
|
||||
#include "nsIDOMInstall.h"
|
||||
#include "nsInstall.h"
|
||||
#include "nsIDOMInstallFolder.h"
|
||||
#include "nsIDOMInstallVersion.h"
|
||||
|
||||
|
@ -43,7 +43,7 @@ class nsInstallFile : public nsInstallObject
|
|||
* inJarLocation - location inside the JAR file
|
||||
* inFinalFileSpec - final location on disk
|
||||
*************************************************************/
|
||||
nsInstallFile( nsIDOMInstall* inInstall,
|
||||
nsInstallFile( nsInstall* inInstall,
|
||||
const nsString& inVRName,
|
||||
nsIDOMInstallVersion* inVInfo,
|
||||
const nsString& inJarLocation,
|
||||
|
|
|
@ -124,7 +124,6 @@ nsInstallFolder::nsInstallFolder()
|
|||
{
|
||||
mScriptObject = nsnull;
|
||||
|
||||
char *errorMsg = NULL;
|
||||
mUrlPath = mFolderID = mVersionRegistryPath = mUserPackageName = nsnull;
|
||||
|
||||
NS_INIT_REFCNT();
|
||||
|
@ -233,12 +232,19 @@ NS_IMETHODIMP
|
|||
nsInstallFolder::MakeFullPath(const nsString& aRelativePath, nsString& aFullPath)
|
||||
{
|
||||
nsString *tempString = GetNativePath(aRelativePath);
|
||||
|
||||
aFullPath.SetLength(0);
|
||||
aFullPath.Append( *mUrlPath );
|
||||
aFullPath.Append( *tempString );
|
||||
|
||||
if (mUrlPath != nsnull)
|
||||
{
|
||||
aFullPath.Append( *mUrlPath );
|
||||
}
|
||||
|
||||
if (tempString)
|
||||
if (tempString != nsnull)
|
||||
{
|
||||
aFullPath.Append( *tempString );
|
||||
delete tempString;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -20,13 +20,14 @@
|
|||
#define nsInstallObject_h__
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "nsIDOMInstall.h"
|
||||
|
||||
class nsInstall;
|
||||
|
||||
class nsInstallObject
|
||||
{
|
||||
public:
|
||||
/* Public Methods */
|
||||
nsInstallObject(nsIDOMInstall* inInstall) {mInstall = inInstall; }
|
||||
nsInstallObject(nsInstall* inInstall) {mInstall = inInstall; }
|
||||
|
||||
/* Override with your set-up action */
|
||||
virtual PRInt32 Prepare() = 0;
|
||||
|
@ -45,7 +46,7 @@ class nsInstallObject
|
|||
virtual PRBool RegisterPackageNode() = 0;
|
||||
|
||||
protected:
|
||||
nsIDOMInstall* mInstall;
|
||||
nsInstall* mInstall;
|
||||
};
|
||||
|
||||
#endif /* nsInstallObject_h__ */
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include "nsString.h"
|
||||
#include "nsIDOMInstall.h"
|
||||
#include "nsIDOMInstallFolder.h"
|
||||
#include "nsIDOMInstallVersion.h"
|
||||
#include "nsIScriptNameSpaceManager.h"
|
||||
#include "nsRepository.h"
|
||||
#include "nsDOMCID.h"
|
||||
|
@ -39,11 +38,9 @@ static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID);
|
|||
static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID);
|
||||
static NS_DEFINE_IID(kIInstallIID, NS_IDOMINSTALL_IID);
|
||||
static NS_DEFINE_IID(kIInstallFolderIID, NS_IDOMINSTALLFOLDER_IID);
|
||||
static NS_DEFINE_IID(kIInstallVersionIID, NS_IDOMINSTALLVERSION_IID);
|
||||
|
||||
NS_DEF_PTR(nsIDOMInstall);
|
||||
NS_DEF_PTR(nsIDOMInstallFolder);
|
||||
NS_DEF_PTR(nsIDOMInstallVersion);
|
||||
|
||||
//
|
||||
// Install property ids
|
||||
|
@ -264,7 +261,7 @@ InstallAddSubcomponent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js
|
|||
JSBool rBool = JS_FALSE;
|
||||
PRInt32 nativeRet;
|
||||
nsAutoString b0;
|
||||
nsIDOMInstallVersionPtr b1;
|
||||
nsAutoString b1;
|
||||
nsAutoString b2;
|
||||
nsIDOMInstallFolderPtr b3;
|
||||
nsAutoString b4;
|
||||
|
@ -281,13 +278,7 @@ InstallAddSubcomponent(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, js
|
|||
|
||||
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||
|
||||
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b1,
|
||||
kIInstallVersionIID,
|
||||
"InstallVersion",
|
||||
cx,
|
||||
argv[1])) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||
|
||||
nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]);
|
||||
|
||||
|
@ -606,7 +597,7 @@ InstallGetFolder(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
|
|||
nsIDOMInstall *nativeThis = (nsIDOMInstall*)JS_GetPrivate(cx, obj);
|
||||
JSBool rBool = JS_FALSE;
|
||||
nsIDOMInstallFolder* nativeRet;
|
||||
nsIDOMInstallFolderPtr b0;
|
||||
nsAutoString b0;
|
||||
nsAutoString b1;
|
||||
|
||||
*rval = JSVAL_NULL;
|
||||
|
@ -618,13 +609,7 @@ InstallGetFolder(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
|
|||
|
||||
if (argc >= 2) {
|
||||
|
||||
if (JS_FALSE == nsJSUtils::nsConvertJSValToObject((nsISupports **)&b0,
|
||||
kIInstallFolderIID,
|
||||
"InstallFolder",
|
||||
cx,
|
||||
argv[0])) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||
|
||||
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||
|
||||
|
@ -973,49 +958,6 @@ InstallUninstall(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
|
|||
}
|
||||
|
||||
|
||||
//
|
||||
// Native method ExtractFileFromJar
|
||||
//
|
||||
PR_STATIC_CALLBACK(JSBool)
|
||||
InstallExtractFileFromJar(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||
{
|
||||
nsIDOMInstall *nativeThis = (nsIDOMInstall*)JS_GetPrivate(cx, obj);
|
||||
JSBool rBool = JS_FALSE;
|
||||
PRInt32 nativeRet;
|
||||
nsAutoString b0;
|
||||
nsAutoString b1;
|
||||
nsAutoString b2;
|
||||
|
||||
*rval = JSVAL_NULL;
|
||||
|
||||
// If there's no private data, this must be the prototype, so ignore
|
||||
if (nsnull == nativeThis) {
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
if (argc >= 3) {
|
||||
|
||||
nsJSUtils::nsConvertJSValToString(b0, cx, argv[0]);
|
||||
|
||||
nsJSUtils::nsConvertJSValToString(b1, cx, argv[1]);
|
||||
|
||||
nsJSUtils::nsConvertJSValToString(b2, cx, argv[2]);
|
||||
|
||||
if (NS_OK != nativeThis->ExtractFileFromJar(b0, b1, b2, &nativeRet)) {
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
*rval = INT_TO_JSVAL(nativeRet);
|
||||
}
|
||||
else {
|
||||
JS_ReportError(cx, "Function ExtractFileFromJar requires 3 parameters");
|
||||
return JS_FALSE;
|
||||
}
|
||||
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************/
|
||||
//
|
||||
// class for Install
|
||||
|
@ -1069,7 +1011,6 @@ static JSFunctionSpec InstallMethods[] =
|
|||
{"SetPackageFolder", InstallSetPackageFolder, 1},
|
||||
{"StartInstall", InstallStartInstall, 4},
|
||||
{"Uninstall", InstallUninstall, 1},
|
||||
{"ExtractFileFromJar", InstallExtractFileFromJar, 3},
|
||||
{0}
|
||||
};
|
||||
|
||||
|
|
|
@ -125,10 +125,9 @@ int RunInstallJS(char* installJSFile)
|
|||
NS_RELEASE(scriptContextOwner);
|
||||
}
|
||||
}
|
||||
aWindow->Close();
|
||||
NS_RELEASE(aWindow);
|
||||
}
|
||||
|
||||
aWindow->Release();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ nsSoftwareUpdateListener::OnDataAvailable(nsIURL* aURL, nsIInputStream *pIStream
|
|||
|
||||
if (err == NS_OK)
|
||||
{
|
||||
if( PR_Write(mOutFileDesc, buffer, len) == -1 )
|
||||
if ( PR_Write(mOutFileDesc, buffer, len) == -1 )
|
||||
{
|
||||
/* Error */
|
||||
return -1;
|
||||
|
|
Загрузка…
Ссылка в новой задаче