void vInstall(char *cmd) { char name[MAXREGPATHLEN+1]; char path[MAXREGPATHLEN+1]; VERSION ver; parse(cmd, name, &ver, path); error("VR_Install", VR_Install(name, path, &ver)); } // vInstall
void vInstall(char *cmd) { char name[MAXREGPATHLEN+1]; char path[MAXREGPATHLEN+1]; char ver[MAXREGPATHLEN+1]; char *pPath, *pVer; cmd = GetNextWord(cmd, name); cmd = GetNextWord(cmd, ver); cmd = GetNextWord(cmd, path); pVer = ( ver[0] != '*' ) ? ver : NULL; pPath = ( path[0] != '*' ) ? path : NULL; error("VR_Install", VR_Install(name, pPath, pVer, FALSE)); } /* vInstall */
void vTest(char *cmd) { VERSION ver; ver.major = 4; ver.minor = 0; ver.release = 0; ver.build = 237; ver.check = gPretend ? 0xad : 0; if (error("VR_Install", VR_Install("Navigator/NS.exe", "c:\\Program Files\\Netscape\\Navigator\\Program\\NETSCAPE.EXE", &ver))) return; if (error("VR_Install", VR_Install("Navigator/Help", "c:\\Program Files\\Netscape\\Navigator\\Program\\NETSCAPE.HLP", &ver))) return; if (error("VR_Install", VR_Install("Navigator/NSPR", "c:\\Program Files\\Netscape\\Navigator\\Program\\NSPR32.DLL", &ver))) return; if (error("VR_Install", VR_Install("Navigator/Player", "c:\\Program Files\\Netscape\\Navigator\\Program\\NSPLAYER.EXE", &ver))) return; if (error("VR_Install", VR_Install("Navigator/NSJava", "c:\\Program Files\\Netscape\\Navigator\\Program\\NSJAVA32.DLL", &ver))) return; if (error("VR_Install", VR_Install("Web/Certificate.DB", "c:\\Program Files\\Netscape\\Navigator\\Program\\CERT.DB", &ver))) return; if (error("VR_Install", VR_Install("Web/CertificateNI.DB", "c:\\Program Files\\Netscape\\Navigator\\Program\\CERTNI.DB", &ver))) return; if (error("VR_Install", VR_Install("Web/Keys", "c:\\Program Files\\Netscape\\Navigator\\Program\\KEY.DB", &ver))) return; if (error("VR_Install", VR_Install("MailNews/Postal", "c:\\Program Files\\Netscape\\Navigator\\System\\POSTAL32.DLL", &ver))) return; if (error("VR_Install", VR_Install("MailNews/Folders/Inbox", "c:\\Program Files\\Netscape\\Navigator\\Mail\\INBOX.SNM", &ver))) return; if (error("VR_Install", VR_Install("MailNews/Folders/Sent", "c:\\Program Files\\Netscape\\Navigator\\Mail\\SENT.SNM", &ver))) return; if (error("VR_Install", VR_Install("MailNews/Folders/Trash", "c:\\Program Files\\Netscape\\Navigator\\Mail\\TRASH.SNM", &ver))) return; if (error("VR_Install", VR_Install("Components/NUL", "c:\\Program Files\\Netscape\\Navigator\\Program\\Plugins\\NPNUL32.DLL", &ver))) return; if (error("VR_Install", VR_Install("Components/PointCast", "c:\\Program Files\\Netscape\\Navigator\\Program\\Plugins\\NPPCN32.DLL", &ver))) return; if (error("VR_Install", VR_Install("Components/AWT", "c:\\Program Files\\Netscape\\Navigator\\Program\\Java\\bin\\AWT3220.DLL", &ver))) return; if (error("VR_Install", VR_Install("Components/MM", "c:\\Program Files\\Netscape\\Navigator\\Program\\Java\\bin\\MM3220.DLL", &ver))) return; if (error("VR_Install", VR_Install("Java/Classes.Zip", "c:\\Program Files\\Netscape\\Navigator\\Program\\Java\\classes\\MOZ2_0.ZIP", &ver))) return; if (error("VR_Install", VR_Install("Java/Classes Directory", "c:\\Program Files\\Netscape\\Navigator\\Program\\Java\\classes\\MOZ2_0", &ver))) return; } // vTest
/* Complete * Completes the install: * - move the downloaded file to the final location * - updates the registry */ char* nsInstallFile::Complete() { int err; int refCount; int rc; if (softUpdate == NULL) { return SU_GetErrorMsg3("nsSoftwareUpdate object is null", SUERR_INVALID_ARGUMENTS); } if (vrName == NULL) { return SU_GetErrorMsg3("version registry name is null", SUERR_INVALID_ARGUMENTS); } if (finalFile == NULL) { return SU_GetErrorMsg3("folderSpec's full path (finalFile) is null", SUERR_INVALID_ARGUMENTS); } /* Check the security for our target */ // XXX: Make the following security code into a function. /* Request impersonation privileges */ nsTarget* impersonation = nsTarget::findTarget(IMPERSONATOR); nsPrivilegeManager* privMgr = nsPrivilegeManager::getPrivilegeManager(); nsTarget* install_target = NULL; if ((privMgr != NULL) && (impersonation != NULL)) { privMgr->enablePrivilege(impersonation, 1); /* check the security permissions */ install_target = nsTarget::findTarget(INSTALL_PRIV); if (install_target != NULL) { if (!privMgr->enablePrivilege(install_target, softUpdate->GetPrincipal(), 1)) { return SU_GetErrorMsg3("Permssion was denied", SUERR_ACCESS_DENIED); } } } err = NativeComplete(); if ((privMgr != NULL) && (install_target != NULL)) { privMgr->revertPrivilege(install_target, 1); } char *vr_name = vrName->ToNewCString(); char *final_file = finalFile->ToNewCString(); // Add java archives to the classpath. Don't add if we're // replacing an existing file -- it'll already be there. if ( bJavaDir && !replace ) { PRBool found_zip = endsWith(finalFile, ".zip"); PRBool found_jar = endsWith(finalFile, ".jar");; if (found_zip || found_jar) { AddToClasspath( finalFile ); } } // Register file and log for Uninstall if ( 0 == err || SU_REBOOT_NEEDED == err ) { // we ignore all registry errors because they're not // important enough to abort an otherwise OK install. if (!bChild) { int found; if (regPackageName) { char *reg_package_name = regPackageName->ToNewCString(); found = VR_UninstallFileExistsInList( reg_package_name, vr_name ); delete reg_package_name; } else { found = VR_UninstallFileExistsInList( "", vr_name ); } if (found != REGERR_OK) bUpgrade = PR_FALSE; else bUpgrade = PR_TRUE; } else if (REGERR_OK == VR_InRegistry(vr_name)) { bUpgrade = PR_TRUE; } else { bUpgrade = PR_FALSE; } err = VR_GetRefCount( vr_name, &refCount ); if ( err != REGERR_OK ) { refCount = 0; } if (!bUpgrade) { if (refCount != 0) { rc = 1 + refCount; VR_Install( vr_name, final_file, versionInfo->toString(), PR_FALSE ); VR_SetRefCount( vr_name, rc ); } else { if (replace) { VR_Install( vr_name, final_file, versionInfo->toString(), PR_FALSE); VR_SetRefCount( vr_name, 2 ); } else { VR_Install( vr_name, final_file, versionInfo->toString(), PR_FALSE ); VR_SetRefCount( vr_name, 1 ); } } } else if (bUpgrade) { if (refCount == 0) { VR_Install( vr_name, final_file, versionInfo->toString(), PR_FALSE ); VR_SetRefCount( vr_name, 1 ); } else { VR_Install( vr_name, final_file, versionInfo->toString(), PR_FALSE ); VR_SetRefCount( vr_name, 0 ); } } if ( !bChild && !bUpgrade ) { if (regPackageName) { char *reg_package_name = regPackageName->ToNewCString(); VR_UninstallAddFileToList( reg_package_name, vr_name ); delete reg_package_name; } else { VR_UninstallAddFileToList( "", vr_name ); } } } delete vr_name; delete final_file; if ( err != 0 ) { return SU_GetErrorMsg2(SU_ERROR_INSTALL_FILE_UNEXPECTED, finalFile, err); } return NULL; }