Microsoft Knowledge Base Email Alertz

KBAlertz.com: Not all 2007 Office SP1 .msp files in the MSE package are installed if you apply the package on a computer that has the February 2009, March 2009, or April 2009 public update or the February 2009 cumulative update installed

Receive Microsoft Knowledge Base articles by E-Mail?

Every night we scan the Microsoft Knowledge Base. If technologies you're interested in are updated, we'll send you an e-mail. You only get one e-mail a day, and only when new articles are added.

Click here to create a
FREE account
Already have an account?
[Click here to Login]

Search KbAlertz

Advanced Search

Webmasters
Put kbAlertz on your website.
[ Click Here for more! ]





ASP.NET 3.5 Web Hosting with Windows 2008 and SQL 2008: Click Here!
Discount ASP.NET Hosting
ASP.NET 2.0 and 3.5
Windows2008 and SQL2008
US and UK Hosting
KBAlertz referrals get
** SIX MONTHS FREE **


Community Site



We Send hundreds of thousands of emails using ASP.NET Email


ASP.NET 3.5 Web Hosting with Windows 2008 and SQL 2008: Click Here!
Discount ASP.NET Hosting
ASP.NET 2.0 and 3.5
Windows2008 and SQL2008
US and UK Hosting
KBAlertz referrals get
** SIX MONTHS FREE **




Mentioned In








Microsoft Knowledge Base Article

This article contents is Microsoft Copyrighted material.
©2005-©2007 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks




Article ID: 970727 - Last Review: May 8, 2009 - Revision: 1.0

Not all 2007 Office SP1 .msp files in the MSE package are installed if you apply the package on a computer that has the February 2009, March 2009, or April 2009 public update or the February 2009 cumulative update installed

SYMPTOMS

If you apply the 2007 Microsoft Office Service Pack 1 (SP1) Microsoft Self-Extractor (MSE) package on a computer that has the February 2009 public update, the March 2009 public update, or the April 2009 public update installed, or that has the February 2009 cumulative update installed, not all 2007 Office SP1 .msp files in the MSE package are installed. Additionally, the SP1 MSE package installation result message shows a successful installation without any errors.

Notes
  • The February 2009 public update, the March 2009 public update, and the April 2009 public update include the fixes from the following Microsoft Knowledge Base (KB) articles: 957831, 956828, 960003, 959997, 960000.
  • The February 2009 cumulative update includes the fixes from the following KB articles: 962214, 967699, 968245, 961749, 961176, 963022, 961754, 966310, 966313, 966309, 961751, 961756, 962217, 967701, 961753, 966311, 963654, 967702, 961752, 967688, 967697, 966307, 963024, 962215, 966314, 967698, 966308, 967700, 966312, 961750, 961175, 963023, 962872, 961755, 967703.

WORKAROUND

To work around this issue, use one of the following methods.

Note Method 1 is only for client computers. The rest of these methods are for both client and server computers.

Method 1 - client only
  1. Remove the February 2009 public update, the March 2009 public update, the April 2009 public update, and the February 2009 cumulative update. To do this, follow these steps:
    1. Click Start, click Run, type appwiz.cpl, and then click OK.
    2. In the Add or Remove Programs dialog box, click to select the Show updates check box.
    3. Select the updates that you want to remove, and then click Remove.
  2. Install 2007 Office SP1.
  3. Reinstall the updates.
For more information about how to automate the removal of the updates, visit the following Microsoft Web site:
http://msdn.microsoft.com/en-us/library/aa372104(VS.85).aspx (http://msdn.microsoft.com/en-us/library/aa372104(VS.85).aspx)
Method 2

Install 2007 Microsoft Office Service Pack 2 (SP2).

Note The following fixes are included in this service pack.

For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
953195   (http://kbalertz.com/Feedback.aspx?kbNumber=953195/ ) Description of 2007 Microsoft Office Suite Service Pack 2 (Ss) and of Microsoft Office Language Pack 2007 Ss
953292  (http://kbalertz.com/Feedback.aspx?kbNumber=953292/ ) Description of Office SharePoint Designer 2007 Service Pack 2 (SP2) and Office SharePoint Designer Language Pack 2007 Service Pack 2 (SP2)
953326  (http://kbalertz.com/Feedback.aspx?kbNumber=953326/ ) Description of Office Project 2007 Service Pack 2 (SP2) and Office Project Language Pack 2007 Service Pack 2 (SP2)
953327  (http://kbalertz.com/Feedback.aspx?kbNumber=953327/ ) Description of Office Visio 2007 SP2 and of Office Visio Language Pack 2007 SP2
953328  (http://kbalertz.com/Feedback.aspx?kbNumber=953328/ ) Description of Office Proofing Tools 2007 Service Pack 2
953329  (http://kbalertz.com/Feedback.aspx?kbNumber=953329/ ) Description of Calendar Printing Assistant for Outlook 2007 Service Pack 2
953330  (http://kbalertz.com/Feedback.aspx?kbNumber=953330/ ) Description of Microsoft Office InterConnect 2007 Service Pack 2
953331  (http://kbalertz.com/Feedback.aspx?kbNumber=953331/ ) Description of Office Compatibility Pack Service Pack 2
953332  (http://kbalertz.com/Feedback.aspx?kbNumber=953332/ ) Description of PowerPoint Viewer 2007 Service Pack 2
953334   (http://kbalertz.com/Feedback.aspx?kbNumber=953334/ ) Description of 2007 Microsoft Office servers Service Pack 2 and of 2007 Microsoft Office servers Language Pack Service Pack 2
953335  (http://kbalertz.com/Feedback.aspx?kbNumber=953335/ ) Description of Visio Viewer 2007 Service Pack 2
953336  (http://kbalertz.com/Feedback.aspx?kbNumber=953336/ ) Description of Excel Viewer 2007 Service Pack 2
953338  (http://kbalertz.com/Feedback.aspx?kbNumber=953338/ ) Description of Windows SharePoint Services 3.0 SP2 and of Windows SharePoint Services 3.0 Language Pack SP2
953339  (http://kbalertz.com/Feedback.aspx?kbNumber=953339/ ) Description of Microsoft Office Language Interface Pack 2007 Service Pack 2
954711  (http://kbalertz.com/Feedback.aspx?kbNumber=954711/ ) Description of the 2007 Microsoft Office Suite Service Pack 2 DVD and of the 2007 Microsoft Office servers Service Pack 2 and Windows SharePoint Services 3.0 Service Pack 2 DVD
957262  (http://kbalertz.com/Feedback.aspx?kbNumber=957262/ ) Description of Microsoft Office Access Runtime and Data Connectivity Components 2007 Service Pack 2 (SP2)
Method 3

Install 2007 Office SP1 from Microsoft Update. To do this, visit the following Microsoft Web site:
http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=en-us (http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=en-us)
Note Microsoft Update uses Windows Installer native file detection whereas MSE uses a catalog detection method.

Method 4

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

Extract the 2007 Office SP1 .msp files from the MSE package, and then apply the updates directly.

For more information about how to extract the .msp files, click the following article number to view the article in the Microsoft Knowledge Base:
912203  (http://kbalertz.com/Feedback.aspx?kbNumber=912203/ ) Description of the command-line switches that are supported by a software installation package, an update package, or a hotfix package that was created by using Microsoft Self-Extractor


Or, the following VBScript can be used to extract the .msp files and apply them automatically by passing the 2007 Office SP1 MSE package as an argument. The following information provides details about the actions of the script:
  • You can pass the 2007 Office SP1 MSE package as a required argument to the script so that it will extract the .msp files into a %TEMP% folder. Or, you can specify a folder and then apply the .msp files one by one by using Windows Installer.
  • The script generates .msi log files in the same %TEMP% folder, or you can provide a folder by using an optional switch.
  • The script has an optional switch to remove the extract folder completely after a successful installation. It also has another optional switch to remove only the .msp files and to leave the Windows Installer log files.
  • The script has an optional passive switch (so that the MSE Microsoft Software License Terms can be displayed for a better user experience) and an optional silent switch for unattended deployments.
  • The script can detect client or server updates.
  • The script has some useful messages and error checking for ease of use.
  • For server updates, the script has an optional switch to trigger the PSConfigUI Wizard at the end of a successful installation to provide the same MSE package user experience.
  • The script documents all usage instructions. Or, you can use the script together with the -? or –h switch.
To use the script, follow these steps:
  1. Start Notepad.
  2. Paste the following code into Notepad:
    '*****************************************************************************
    ' SPPackageApply.vbs - Script to unpack the provided Office 2007 SP MSE and apply all .msps* 
    '                                   For use with CScript.exe                                                               *
    '                                                                                                                                     *
    ' Copyright (c) 2009, Microsoft Corporation  All rights reserved.                                           *
    '                                                                                                                                     *
    '*****************************************************************************
    Option Explicit
    
    Dim fso, oshell, installer, exefile, stdpatchargs, stdserverargs
    Dim prodidx86, prodidx64, psconfigx86, psconfigx64, svrpackage
    Dim extractroot, rebootdetected, extractfolder, quietmode
    Dim passivemode, patchesapplied, installsuccess, patchfailed
    Dim patchesfound, nopatchremove, removeextractfolder
    Dim runpsconfig
    Dim patchespathlist()
    Dim patchesnamelist()
    Dim patchesreturncodes()
    
    '***********************************
    ' Constants
    '***********************************
    Const systemFolder = 1
    Const temporaryFolder = 2
    Const msiUILevelNone = 2
    Const forReading = 1
    Const maxExtractFolderIncrement = 200
    Const unicodeFile = -1
    
    '***********************************
    ' Standard initialization
    '***********************************
    stdpatchargs = "REBOOT=ReallySuppress LOCALCACHESRCRES=1 NOLOCALCACHEROLLBACK=1 REINSTALLMODE=omu" 
    stdserverargs = "runupgrade=no"
    prodidx86 = "{90120000-1014-0000-0000-0000000FF1CE}"
    prodidx64 = "{90120000-1014-0000-1000-0000000FF1CE}"
    psconfigx86 = "{A0BD74EA-D417-47E1-94A7-B0631C9AF042}" 
    psconfigx64 = "{82A06696-7BB0-410A-9DE8-8C07A3570F75}"
    extractroot = ""
    extractfolder = ""
    svrpackage = False
    quietmode = False
    passivemode = False
    rebootdetected = False
    patchesapplied = False
    installsuccess = False
    patchfailed = False
    patchesfound = False
    nopatchremove = False
    removeextractfolder = False
    runpsconfig = False
    
    '***********************************
    ' Initialize the Windows Shell
    '***********************************
    set oshell = CreateObject("Wscript.Shell") : CheckError
    
    '***********************************
    ' Initialize the FileSystemObject
    '***********************************
    set fso = CreateObject("Scripting.FileSystemObject") : CheckError
    
    '***********************************
    ' Initialize the Windows Installer
    '***********************************
    set installer=CreateObject("WindowsInstaller.Installer") : CheckError
    
    '************************************************************************
    ' EnsureCScript
    '************************************************************************
    Sub EnsureCScript
    	If( "cscript.exe" <> LCase( Right( WScript.FullName, 11 ) ) ) Then
    		WScript.Echo "This script requires to be run by cscript.exe within a command prompt." & vbNewLine & _
    		                    "Use the /H:CSCRIPT command-line option to set cscript as the default host."
    		WScript.Quit 1
    	End If
    End Sub
    
    '************************************************************************
    ' CheckArguments
    '************************************************************************
    Sub CheckArguments
        Dim iFileCnt, iArgCnt, aryArgs
    
        If WScript.Arguments.Count = 0 then
    	    Usage
        Else
        	    If WScript.Arguments(0) = "?" Or WScript.Arguments(0) = "-?" Or WScript.Arguments(0) = "http://support.microsoft.com/?" Or _
        	        WScript.Arguments(0) = "-h" Or WScript.Arguments(0) = "http://support.microsoft.com/h" then
    		Usage
        	    Else    
    		WScript.Echo Now & vbNewLine & "Processing cmdline arguments..." & vbNewLine
    		iFileCnt = 0
    		Set aryArgs = Wscript.Arguments
    
    		exefile = WScript.Arguments(0) ' Exe
    		WScript.Echo "Package executable: " & exeFile
    		If WScript.Arguments.Count > 1 Then
    		    For iArgCnt = 1 to aryArgs.Count - 1
    		    	Select Case LCase( aryArgs(iArgCnt) )
    		   	    Case "/q", "-q"
    		   	       If( passivemode ) Then
    			    		Fail( "Cannot use both the passive (-p) and quiet (-q) together." & vbNewLine & "Exiting..." )
    			    	End If
    				quietmode = True
    				WScript.Echo "Quiet mode enabled."
    			    Case "/p", "-p"
    			    	If( quietmode ) Then
    			    		Fail( "Cannot use both the passive (-p) and quiet (-q) together." & vbNewLine & "Exiting..." )
    			    	End If
    			    	passivemode = True
    			    	WScript.Echo "Passive mode enabled."
    			    Case "/npr", "-npr" 
    			    	If( removeextractfolder ) Then
    			    		Fail( "Cannot use the -rf (remove extract folder) and -npr (no patch removal) together." & vbNewLine & "Exiting..." )
    			    	End If
    			    	nopatchremove = True
    			    	WScript.Echo "Removal of extracted patches disabled."
    			    Case "/rf", "-rf" 
    			    	If( nopatchremove ) Then
    			    		Fail( "Cannot use the -rf (remove extract folder) and -npr (no patch removal) together." & vbNewLine & "Exiting..." )
    			    	End If
    			    	removeextractfolder = True
    			    	WScript.Echo "Removal of extract folder requested." 
    			    Case "/runpsconfig", "-runpsconfig"
    			    	runpsconfig = True
    			    	WScript.Echo "Enable PSConfig execution upon successful completion of patch application."
    			    Case "/extractfolder", "-extractfolder"
    		              extractroot = SGetParameter( aryArgs, iArgCnt )
    		       	iArgCnt = iArgCnt + 1
    		       	WScript.Echo "Extraction root folder: " & extractroot
    			    Case Else
    				Fail( "Unknown argument: " & aryArgs(iArgCnt) & vbNewLine & "Exiting..." )
    			 End Select
    		     Next
    		End If
    
    		' Validate package existence.
    		If Not fso.FileExists( exeFile ) Then
    			Fail( exeFile & " not found." & vbNewLine & "Exiting..." )
    		End If
    
    		WScript.Echo vbNewLine & "Processing cmdline arguments complete." & vbNewLine
    	    End If
         End If
        
    End Sub     
    
    '************************************************************************
    ' SetExtractFolder
    '************************************************************************
    Sub SetExtractFolder
           Dim packageFolderName 
           Dim increment, tempFolderName
    	If( extractroot = "" ) Then 
    		extractroot = fso.GetSpecialFolder(temporaryFolder)
    		' If the system temp folder is missing, exit. 
    		If Not fso.FolderExists( extractroot) Then
    			Fail( extractroot & " not found." & vbNewLine & "Exiting..." )
    		End If
    	End If
    	' If the defined root extract folder does not exist, create it.
    	If Not fso.FolderExists( extractroot ) Then
    		fso.CreateFolder( extractroot )
    	End If
    	If fso.FolderExists( extractroot ) Then
    		packageFolderName = Left( fso.GetFileName(exefile), (Len( fso.GetFileName(exefile) )- 4  ) )
    		' If the package folder exists, delete it.
    		extractfolder = extractroot & "\" & packageFolderName 
    		' Find a folder that does not exist.
    		If( fso.folderExists( extractfolder ) ) Then
    			tempFolderName = extractfolder
    			' When the folder is found, append a value.
    			While fso.FolderExists( tempFolderName )
    				increment = increment + 1
    				tempFolderName = extractfolder & "." & increment 	
    				' Allow more than 200 repeating extract folder with the same package name before failing.
    				If( increment > maxExtractFolderIncrement ) Then
    					Fail( "Over " & maxExtractFolderIncrement & " " & extractfolder & " found." & _
    					        vbNewLine & "Clean out temporary folder to correct." ) 
    				End If
    			Wend
    			If( extractfolder <> tempFolderName ) Then
    				extractfolder = tempFolderName
    			End If
    		End If
    		' Create the package extract folder.
    		fso.CreateFolder( extractfolder)
    		
    		WScript.Echo "Package folder set to: " & extractfolder
    	End If
    End Sub
    
    '************************************************************************
    ' ExtractPackage
    '************************************************************************
    Sub ExtractPackage
    	Dim cmdLine, fileFolder, fileSet, file, patchCnt, returnCode 
    	
    	patchCnt = 0
    	cmdLine = exefile & " " & "/extract:" & extractfolder
    
    	If( quietmode ) Then
    		cmdLine = cmdLine & " /quiet"
    	ElseIf( passivemode ) Then
    		cmdLine = cmdLine & " /passive"
    	End If
    
    	WScript.Echo vbNewLine & Now & vbNewLine & "Extracting the package..."
    	oShell.Run cmdLine, , True
    	CheckError
    	WScript.Echo vbNewLine & Now & vbNewLine & "Package extraction complete."
    
    	Set fileFolder = fso.GetFolder(extractFolder)
       	Set fileSet = filefolder.Files
       	For Each file in fileSet
       		' Server package check.
       		If( Not svrpackage And ( file.name = "svrsetup.dll" Or file.name = "wsssetup.dll" ) ) Then
       			WScript.Echo "Is a server package."
       			svrpackage = true
       		End If
       		' Collect the patch (.msp) list.
       		If( LCase( Right( file.name, 3 ) ) = "msp" ) Then
    	   		patchCnt = patchCnt + 1 
    	   		ReDim Preserve patchespathlist(patchCnt)
    	   		ReDim Preserve patchesnamelist(patchCnt)
    	   		ReDim Preserve patchesreturncodes(patchCnt)
    	   		patchespathlist(patchCnt) = file.path
    	   		patchesnamelist(patchCnt) = file.name 
    	   		patchesfound = True
    	   	End If
       	Next
          	
    End Sub
    
    '************************************************************************
    ' ApplyPatches
    '************************************************************************
    Sub ApplyPatches
    	Dim patchCnt, patchFilePath, patchfileName, patchArguments
    	Dim completionMessage
    
    	completionMessage = "No patches found that apply to this system."
    	' Set standard arguments.
    	patchArguments = stdpatchargs
    	
    	If( Not patchesfound ) Then
    		Fail( "No patches (*.msp) found at " & extractFolder )
    	Else
    		If( svrpackage ) Then
    			' Append standard server arguments.
    			patchArguments = patchArguments & " " & stdserverargs
    		End If
    		'WScript.Echo "Arguments: " & patchArguments
    
    		' Apply all the installer patches (*.msp).
    	   	For patchCnt = 1 To UBound(patchespathlist)
    	   		Dim cmdLine, logFilePath, patchCompletionMessage
    	   		patchFilePath = patchespathlist(patchCnt)
    	   		patchfileName = patchesnamelist(patchCnt)
    	   		patchCompletionMessage = "No qualified products found for this patch."
    			If Not fso.FileExists(patchFilePath) Then
    			   Fail( "File not found " & patchFilePath )
    			End If
    
    			logFilePath = Left( patchFilePath, (Len(patchFilePath) - 4 ) ) & ".log "
    			cmdLine = "msiexec.exe /quiet /update " & patchFilePath & " "  
    			cmdLine = cmdLine & "/l*v " & logFilePath
    			cmdLine = cmdLine & patchArguments 
    			'WScript.Echo cmdLine
    			WScript.Echo vbNewLine & Now & vbNewLine & "Applying " & patchfileName & " to all qualified products..."
    			oShell.Run cmdLine, , True
    			
    			' Inspect log for return code.
    			If( fso.FileExists( logFilePath ) ) Then
    				Dim logFile, logLine, outputLine
    				Set logFile = fso.OpenTextFile(logFilePath, forReading, True, unicodeFile)
    				Do While logFile.AtEndOfStream <> True
    					Dim startPos, lineWords
    				       logLine = logFile.ReadLine
    				       'WScript.Echo logLine
    					startPos = InStr( logLine, "MainEngineThread is returning" )
    					If( startPos ) Then
    						If( startPos > 0 ) Then
    							outputLine = logLine
    							lineWords = Split(outputLine, " ")
    							If( lineWords(UBound(lineWords)) = "0" Or lineWords(UBound(lineWords)) = 0 ) Then
    								' When zero, the patch applied.
    								patchesapplied = True
    								completionMessage = ""
    								patchCompletionMessage = "Patch install completed successfully."
    							ElseIf(lineWords(UBound(lineWords)) = "3010" Or lineWords(UBound(lineWords)) = 3010 ) Then
    								' Reboot required to complete the installation. 
    								rebootdetected = True
    								completionMessage = ""
    								patchCompletionMessage = "Patch install completed successfully. However a reboot is required to complete the installation."
    							Else
    								patchfailed = True
    								completionMessage = ""
    								patchCompletionMessage = "Patch install failed with return code " & lineWords(UBound(lineWords)) & "."
    							End If
    						End If
    					End If
    				Loop
    
    				If( Len( outputLine ) > 0 ) Then
    					patchesreturncodes(patchCnt) = lineWords(UBound(lineWords))
    				End If
    			End If
    			WScript.Echo patchCompletionMessage
    			CheckError
    		Next
    
    		' Build up completion message.
    		If( patchesapplied And Not patchfailed ) Then
    			completionMessage = "Application of the patches completed successfully."
    		End If
    		If( patchfailed ) Then
    			completionMessage = completionMessage  & vbNewLine & "Some patches failed to apply."
    		End If
    		If( rebootdetected ) Then
    			completionMessage = completionMessage & vbNewLine & "A reboot of this system is required to complete this installation."
    		End If
    		If( Not removeextractfolder And ( patchesapplied Or patchfailed Or rebootdetected ) ) Then
    			completionMessage = completionMessage & vbNewLine & "For additional information see the logs at " & extractFolder & "."
    		End If
    		WScript.Echo vbNewLine & Now & vbNewLine & completionMessage
    
    	End If
    End Sub
    
    '************************************************************************
    ' RunPSConfigWiz
    '************************************************************************
    Sub RunPSConfigWiz
    	' Only for server packages, when there are patch logs.
    	If( svrpackage And patchesapplied ) Then
    		If(runpsconfig And Not rebootdetected ) Then
    			Dim psconfigCmdLine, psconfigFound, packagePlatform
    			
    			psconfigFound = False
    			packagePlatform = InStr( exefile, "x64" )
    			
    			' Check if x64 is installed.
    			psconfigCmdLine = installer.ComponentPath( prodidx64, psconfigx64 )
    
    			If( Len( psconfigCmdLine ) > 0 ) Then
    				If( fso.FileExists( psconfigCmdLine ) ) Then
    					psconfigFound = True
    					WScript.Echo "SharePoint(x64) found."
    				End If
    			End If
    			' When not found, try the x86 component.
    			If( Not psconfigFound ) Then
    				psconfigCmdLine = Installer.ComponentPath( prodidx86, psconfigx86 )
    				If( Len( psconfigCmdLine ) > 0 ) Then
    					If( fso.FileExists( psconfigCmdLine ) ) Then
    						psconfigFound = True
    						WScript.Echo "SharePoint(x86) found."
    					End If
    				End If
    			End If
    
    			If( psconfigFound ) Then	
    				' Call PSconfig.
    				psconfigCmdLine = Chr(34) & psconfigCmdLine & Chr(34)
    				WScript.Echo "Executing " & psconfigCmdLine
    				oShell.Run psconfigCmdLine, , True
    			Else
    				WScript.Echo "Unable to determine the location of PSConfig. Please run the SharePoint Products and Technologies Configuration Wizard to finalize the update."
    			End If
    		Else
    			WScript.Echo "Please run the SharePoint Products and Technologies Configuration Wizard to finalize the update."
    		End If
    	End If
    End Sub
    
    '************************************************************************
    ' RemoveFiles
    '************************************************************************
    Sub RemoveFiles
    	If( Not nopatchremove ) Then
    		If( Not patchfailed ) Then
    			Dim patchCnt, patchfilePath
    			WScript.Echo "Clean up of extracted files."
    			For patchCnt = 1 To UBound(patchespathlist)
    			   	Dim cmdLine
    			   	patchFilePath = patchespathlist(patchCnt)
    				If( fso.FileExists( patchFilePath ) ) Then
    					fso.DeleteFile( patchFilePath )
    				End If
    			Next
    			' Clean up server DLLs.
    			If( svrpackage ) Then
    				Dim fileFolder, fileSet, tmpfile
    				Set fileFolder = fso.GetFolder(extractFolder)
    			   	Set fileSet = filefolder.Files
    			   	For Each tmpfile in fileSet
    			   		If( tmpfile.name = "svrsetup.dll" Or tmpfile.name = "wsssetup.dll" ) Then
    			   			tmpfile.delete( True ) 
    			   		End If
    			   	Next
    			End If
    		Else
    			WScript.Echo "Cleanup of extracted patches suspended, due to failures."
    		End If
    	Else
    		WScript.Echo "Cleanup of extracted patches suppressed."
    	End If
    End Sub
    
    '************************************************************************
    ' ExtractFolderRemoval
    '************************************************************************
    Sub ExtractFolderRemoval
    	If( removeextractfolder ) Then
    		If( Not patchfailed ) Then
    			WScript.Echo "Removing " & extractfolder
    			fso.Deletefolder( extractfolder )
    		Else
    			WScript.Echo "Suspending removal of extract folder due to patch failure(s)."
    		End If
    	End If
    End Sub
    
    '************************************************************************
    ' SGetParameter
    '************************************************************************
    Function SGetParameter(aryArgs, iArg)
        Dim sParameter
    
        If iArg + 1 < aryArgs.Count Then
            sParameter = aryArgs(iArg + 1)
            If Left(sParameter,1) <> "-" And Left(sParameter, 1) <> "" Then
                SGetParameter = sParameter
            Else
                Fail("Unexpected value: " & sParameter & ". Exiting..." )
            End If
        Else
            Fail("Argument value missing.  Exiting..." )
        End If
       
    End Function
    
    '************************************************************************
    ' CheckError
    '************************************************************************
    Sub CheckError
    	Dim message, errRec
    	If Err = 0 Then Exit Sub
    	'message = Err.Source & " " & Hex(Err) & ": " & Err.Description
    	If Not installer Is Nothing Then
    		Set errRec = installer.LastErrorRecord
    		If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText
    	End If
    	Fail message
    End Sub
    
    '************************************************************************
    ' Fail
    '************************************************************************
    Sub Fail(message)
    	WScript.Echo message
    	WScript.Quit 2
    End Sub
    
    '************************************************************************
    ' Usage
    '************************************************************************
    Sub Usage
    	WScript.Echo WScript.ScriptName & " '<Full path to the Office 2007 SP executable>'"
    	WScript.Echo "                   [-q -p -npr -rf -runpsconfig -extractfolder <path> -?]"
    	WScript.Echo ""
    	WScript.Echo "  Script to unpack the provided Office 2007 SP MSE and apply all patches."
    	WScript.Echo ""
    	WScript.Echo "  REQUIREMENTS: - Execute with a user account that has administrative rights."
    	WScript.Echo "                - Executed by cscript.exe."
    	WScript.Echo "                - First argument must be the full path to the package exe"
    	WScript.Echo ""
    	WScript.Echo "  Arguments"
    	WScript.Echo "  ============================================================================="
    	WScript.Echo "  [Required]"
    	WScript.Echo "  '<Full path to the Office 2007 SP executable>'"
    	WScript.Echo " "
    	WScript.Echo "  [Optional]"
    	WScript.Echo "  -q              - Suppress package exe UI "
    	WScript.Echo "  -p              - Suppress EULA prompt"
    	WScript.Echo "  -npr            - No patch removal from the extract folder upon completion"
    	WScript.Echo "  -rf             - Remove extract folder upon successful completion"
    	WScript.Echo "  -extractfolder  '<Full path to extract folder>'"
    	WScript.Echo "                  - Root folder for extraction; created if it does not exist"
    	WScript.Echo "                    NOTE: Default is the user's %TMP% folder"
    	WScript.Echo "  -runpsconfig    - Run run the SharePoint Products and Technologies" 
    	WScript.Echo "                    Configuration Wizard upon completion of successful"
    	WScript.Echo "                    patch application."
    	WScript.Echo "  -? or -h        - This text"
    	WScript.Quit 1
    End Sub
    
    'Main
    EnsureCScript
    CheckArguments
    SetExtractFolder
    ExtractPackage
    ApplyPatches
    RunPSConfigWiz
    RemoveFiles
    ExtractFolderRemoval
    
    
  3. Save the file as FileName.vbs.
  4. At a command prompt, change to the location in which you saved that file, and then run the following command:
    cscript FileName.vbs

APPLIES TO
  • Microsoft Office Basic 2007
  • Microsoft Office Enterprise 2007
  • Microsoft Office Home and Student 2007
  • Microsoft Office Professional 2007
  • Microsoft Office Professional Plus 2007
  • Microsoft Office Small Business 2007
  • Microsoft Office Standard 2007
  • Microsoft Office Forms Server 2007
  • Microsoft Office Groove Server 2007 Data Bridge
  • Microsoft Office Groove Server 2007 Manager
  • Microsoft Office Groove Server 2007 Relay
  • Microsoft Office Project Server 2007
  • Microsoft Office SharePoint Server 2007
  • Microsoft Windows SharePoint Services 3.0
  • Microsoft Office Access 2007
  • Microsoft Office Excel Viewer 2007
  • Microsoft Office Excel 2007
  • Microsoft Office InfoPath 2007
  • Microsoft Office Groove 2007
  • Microsoft Office Input Method Editor 2007
  • Microsoft Office OneNote 2007
  • Microsoft Office Outlook 2007
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint Viewer 2007
  • Microsoft Office Project Professional 2007
  • Microsoft Office Project Standard 2007
  • Microsoft Office Publisher 2007
  • Microsoft Office Visio Professional 2007
  • Microsoft Office Visio Standard 2007
  • Microsoft Office Visio Viewer 2007
  • Microsoft Office Word 2007
Keywords: 
kbexpertiseinter kbtshoot kbsurveynew kbprb KB970727
       

Community Feedback System

Very often, it takes hours to solve a problem. Very often, you've looked high and low, and have tried a lot of solutions. When you finally found it, chances are, it was because someone else helped you. Here's your chance to give back. Use our community feedback tool to let others know what worked for you and what didn't.

Please also understand that the community feedback system is not warranted to be correct, it's simply a system that we've built to let people try and help each other. If something in a feedback response doesn't make sense to you, or you're not comfortable making changes that the feedback talks about (like registry edits), please consult a professional.

Thank you for using kbAlertz.com Feedback System.

-- Scott Cate

Be the first to leave feedback, to help others about this knowledge base article.

(Optional) Name

(Optional) Public URL Or Email

Comments
No HTML -- Text Only Please