Make Install.execute() work on Unix.
[nsbeta2+ b = 37168; r = ssu] git-svn-id: svn://10.0.0.236/trunk@73940 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -138,51 +138,54 @@ PRInt32 ReplaceExistingWindowsFile(nsIFile* currentSpec, nsIFile* finalSpec)
|
||||
|
||||
PRInt32 DeleteFileNowOrSchedule(nsIFile* filename)
|
||||
{
|
||||
|
||||
PRBool flagExists;
|
||||
PRInt32 result = nsInstall::SUCCESS;
|
||||
PRBool flagExists;
|
||||
PRInt32 result = nsInstall::SUCCESS;
|
||||
|
||||
filename->Delete(PR_FALSE);
|
||||
filename->Exists(&flagExists);
|
||||
if (flagExists)
|
||||
result = ScheduleFileForDeletion(filename);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
PRInt32 ScheduleFileForDeletion(nsIFile *filename)
|
||||
{
|
||||
// could not delete, schedule it for later
|
||||
|
||||
RKEY newkey;
|
||||
HREG reg;
|
||||
REGERR err;
|
||||
PRInt32 result = nsInstall::UNEXPECTED_ERROR;
|
||||
|
||||
err = NR_RegOpen("", ®) ;
|
||||
if ( err == REGERR_OK )
|
||||
{
|
||||
// could not delete, schedule it for later
|
||||
|
||||
RKEY newkey;
|
||||
HREG reg;
|
||||
REGERR err;
|
||||
result = nsInstall::UNEXPECTED_ERROR;
|
||||
|
||||
err = NR_RegOpen("", ®) ;
|
||||
err = NR_RegAddKey(reg,ROOTKEY_PRIVATE,REG_DELETE_LIST_KEY,&newkey);
|
||||
if ( err == REGERR_OK )
|
||||
{
|
||||
err = NR_RegAddKey(reg,ROOTKEY_PRIVATE,REG_DELETE_LIST_KEY,&newkey);
|
||||
char valname[20];
|
||||
char* fnamestr = nsnull;
|
||||
|
||||
err = NR_RegGetUniqueName( reg, valname, sizeof(valname) );
|
||||
if ( err == REGERR_OK )
|
||||
{
|
||||
char valname[20];
|
||||
char* fnamestr = nsnull;
|
||||
|
||||
err = NR_RegGetUniqueName( reg, valname, sizeof(valname) );
|
||||
if ( err == REGERR_OK )
|
||||
nsresult rv;
|
||||
rv = GetPersistentStringFromSpec( filename, &fnamestr );
|
||||
if ( NS_SUCCEEDED(rv) && fnamestr )
|
||||
{
|
||||
nsresult rv;
|
||||
rv = GetPersistentStringFromSpec( filename, &fnamestr );
|
||||
if ( NS_SUCCEEDED(rv) && fnamestr )
|
||||
{
|
||||
err = NR_RegSetEntry( reg, newkey, valname,
|
||||
REGTYPE_ENTRY_BYTES,
|
||||
(void*)fnamestr,
|
||||
strlen(fnamestr)+1);
|
||||
|
||||
err = NR_RegSetEntry( reg, newkey, valname,
|
||||
REGTYPE_ENTRY_BYTES,
|
||||
(void*)fnamestr,
|
||||
strlen(fnamestr)+1);
|
||||
|
||||
if ( err == REGERR_OK )
|
||||
result = nsInstall::REBOOT_NEEDED;
|
||||
}
|
||||
if ( err == REGERR_OK )
|
||||
result = nsInstall::REBOOT_NEEDED;
|
||||
}
|
||||
}
|
||||
|
||||
NR_RegClose(reg);
|
||||
}
|
||||
|
||||
NR_RegClose(reg);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
* Contributor(s):
|
||||
* Daniel Veditz <dveditz@netscape.com>
|
||||
* Douglas Turner <dougt@netscape.com>
|
||||
* Samir Gehani <sgehani@netscape.com>
|
||||
*/
|
||||
|
||||
#ifndef __SCHEDULEDTASKS_H__
|
||||
@@ -36,6 +37,7 @@ PR_BEGIN_EXTERN_C
|
||||
|
||||
PRInt32 DeleteFileNowOrSchedule(nsIFile* filename);
|
||||
PRInt32 ReplaceFileNowOrSchedule(nsIFile* tmpfile, nsIFile* target );
|
||||
PRInt32 ScheduleFileForDeletion(nsIFile* filename);
|
||||
|
||||
|
||||
void PerformScheduledTasks(HREG reg);
|
||||
|
||||
@@ -105,7 +105,7 @@ PRInt32 nsInstallExecute::Complete()
|
||||
if(cArgs[0])
|
||||
delete(cArgs[0]);
|
||||
|
||||
DeleteFileNowOrSchedule( app );
|
||||
ScheduleFileForDeletion( app );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user