Exemple #1
0
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
Exemple #2
0
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 */
Exemple #3
0
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;
}