Christophe Fiessinger's Blog Updates on Microsoft's Enterprise Social Networking (ESN) and Project Portfolio Management (PPM) offerings
More info here: http://www.microsoft.com/windows7 this is a fun week :)
[ Updated 4/25/2011 – modified code to support Windows 7, please not that this functionality is out of the box in Project Server 2010 and no longer requires such VBA script!]
A great question we heard this morning during the Project 2007 SP2 webcast and every time we release a server and desktop software update for Project 2007 and Project Server 2007, is how do I ensure the desktop contains the proper software updates? For instance how I do ensure that ALL desktop version for Project that connect to Project Server have Service Pack 2 installed?
In this first approach change MIN_PROJ_VERSION to the latest SP2 version number: 6425
Feel free to customize the Warning message at will!
Declare Function RegCloseKey& Lib "advapi32.dll" (ByVal hKey&)
Declare Function RegOpenKeyExA& Lib "advapi32.dll" (ByVal hKey&, ByVal lpszSubKey$, ByVal dwOptions&, ByVal samDesired&, lpHKey&)
Declare Function RegQueryValueExA& Lib "advapi32.dll" (ByVal hKey&, ByVal lpszValueName$, ByVal lpdwRes&, lpdwType&, ByVal lpDataBuff$, nSize&)
Declare Function RegQueryValueEx& Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey&, ByVal lpszValueName$, ByVal lpdwRes&, lpdwType&, lpDataBuff&, nSize&)
Const MIN_PROJ_VERSION = 6330
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const ERROR_SUCCESS = 0&
Const REG_SZ = 1& ' Unicode nul terminated string
Const REG_DWORD = 4& ' 32-bit number
Const KEY_QUERY_VALUE = &H1&
Const KEY_SET_VALUE = &H2&
Const KEY_CREATE_SUB_KEY = &H4&
Const KEY_ENUMERATE_SUB_KEYS = &H8&
Const KEY_NOTIFY = &H10&
Const KEY_CREATE_LINK = &H20&
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const STANDARD_RIGHTS_READ = READ_CONTROL
Const STANDARD_RIGHTS_WRITE = READ_CONTROL
Const STANDARD_RIGHTS_EXECUTE = READ_CONTROL
Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Const KEY_WRITE = STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
Const KEY_EXECUTE = KEY_READ
Dim projVersion As String
Dim version As String
projVersion = RegGetValue$(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109B30000000000000000F01FEC\InstallProperties", "DisplayVersion")
version = Mid(projVersion, 6, 4)
If (CInt(version) < MIN_PROJ_VERSION) Then
MsgBox "Your version of Winproj.exe is not valid and may cause problems." & Chr(13) & Chr(13) & _
"The installation of new version of Microsoft Project is required!" & Chr(13) & Chr(13) & _
"Required Version: " & Left(projVersion, 5) & MIN_PROJ_VERSION & ".XXXX" & (Chr(13)) & _
"Found Version: " & projVersion & Chr(13) & Chr(13) & _
"Microsoft Project will now Exit." _
, vbExclamation, "Program Version Check"
Function RegGetValue$(MainKey&, SubKey$, value$)
' MainKey must be one of the Publicly declared HKEY constants.
Dim sKeyType& 'to return the key type. This function expects REG_SZ or REG_DWORD
Dim ret& 'returned by registry functions, should be 0&
Dim lpHKey& 'return handle to opened key
Dim lpcbData& 'length of data in returned string
Dim ReturnedString$ 'returned string value
Dim ReturnedLong& 'returned long value
If MainKey >= &H80000000 And MainKey <= &H80000006 Then
' Open key
ret = RegOpenKeyExA(MainKey, SubKey, 0&, KEY_READ, lpHKey)
If ret <> ERROR_SUCCESS Then
RegGetValue = ""
Exit Function 'No key open, so leave
' Set up buffer for data to be returned in.
' Adjust next value for larger buffers.
lpcbData = 255
ReturnedString = Space$(lpcbData)
' Read key
ret& = RegQueryValueExA(lpHKey, value, ByVal 0&, sKeyType, ReturnedString, lpcbData)
If ret <> ERROR_SUCCESS Then
RegGetValue = "" 'Value probably doesn't exist
If sKeyType = REG_DWORD Then
ret = RegQueryValueEx(lpHKey, value, ByVal 0&, sKeyType, ReturnedLong, 4)
If ret = ERROR_SUCCESS Then RegGetValue = CStr(ReturnedLong)
RegGetValue = Left$(ReturnedString, lpcbData - 1)
' Always close opened keys.
ret = RegCloseKey(lpHKey)
Another way to validate the desktop version, uses the file system. The only challenge with this approach is determining the location of the Program Files directory.
Dim MainFolderName As String
Dim LastMod As String
Dim Created As String
Dim Size As String
Dim projVersion As String
Set objShell = CreateObject("Shell.Application")
MainFolderName = "C:\Program Files\Microsoft Office\Office12"
Set FSO = CreateObject("scripting.FileSystemObject")
Set oFolder = FSO.GetFolder(MainFolderName)
'error handling to stop the obscure error that occurs at time when retrieving DateLastAccessed
On Error Resume Next
For Each fil In oFolder.Files
Set objFolder = objShell.Namespace(oFolder.Path)
Set objFolderItem = objFolder.ParseName(fil.Name)
Select Case UCase(fil.Name)
Case Is = "WINPROJ.EXE"
LastMod = fil.DateLastModified
Created = fil.DateCreated
Size = fil.Size
MsgBox ("File: " + fil.Name + " Last Modified: " + LastMod + " Created: " + Created + " Size: " + Size)
'do all of the normal tests here to determine which version you need and which you have. See above.
Following the webcast this morning I would like to confirm the following versions after successfully installing Project Server 2007 Service Pack 2 (SP2) on your farm:
More information in this TechNet article: Deploy Service Pack 2 for Office Project Server 2007 (TechNet article contains slight error on the db version, will be fix soon)
Thanks to Paul Andrew for posting this, check the following SharePoint developers webcast series on Channel 9 from Kirk Evans which can all be very useful for any Project Server 2007 customization:
In case you missed it and since I’m sure many of you spend a significant amount of time in Outlook every day, it was just released today!
I’ve seen major performance improvements so far.
Key links below:
(updated on 5/14, SP2 webcast recording and deck are here)
We are happy to announce that Service Pack 2 (SP2) for Office Project 2007 and Office Project Server 2007 has been released to the Microsoft Download Center. It includes all the fixes prior to SP2 (including the February 2009 Cumulative Update), and also several enhancements to Project Standard and Professional, Project Server, SharePoint Server 2007 and Windows SharePoint Services 3.0.
Before you install this service pack there are some very important things to understand. In this mail I'll try to provide you with the resources you need to be successful in your updates. It is essential that you understand the appropriate links, and thoroughly read the guidance and test out the patch in a separate environment prior to a production rollout.
I also encourage everyone to attend the Project 2007 Service Pack 2 Overview webcast scheduled for April 29 at 8 am Pacific Time, and April 30 at 5 pm Pacific Time (webcast details are posted on EPMConnect). Adrian Jenkins and myself will cover the following topics during the webcast: SP2 Overview, April Cumulative Update Overview, Deployment Best Practices, Next Steps, Questions and Answers.
Service Pack 2 (SP2) Description
Service Pack 2 (SP2) Download Center Page
WSS Language Pack (x86)
Service Pack 2 (SP2) Deployment Resources
Service Pack 2 (SP2) Related Technical Resources
Once your farm has been properly updated the new SP2 product version will be: 22.214.171.12422.1000 (database) and 126.96.36.19925.1000 (dll).
Getting Ready for Project Server 2010
As part of the SP2 release we announced the following requirements for the next release of SharePoint and Project Server: Windows Server 2008 and 64 bit. We will be publishing guidance on how to upgrade your existing Project Server 2007 farm to Windows Server 2008 64 bit in the coming weeks on TechNet. Expect full system requirements for Project Server 2010 at a latter date.
Please note we will release a Service Pack 2 for Project Portfolio Server 2007 within the next two months, I will send an email once it has been released.
(updated on 5/14, recording is here)
Service Pack 2 (SP2) for the 2007 Microsoft Office System is due to ship April 28th. Please join Adrian Jenkins and myself to get an overview of Project 2007 and Project Server 2007 updates in SP2, recommended best practices to deploy SP2 in your environment, and answer your questions about SP2.
Please note we will deliver the same webcast twice to accommodate different time zones, we will also record these webcast and will make them available on EPMConnect:
Requirements for Attending this EventWe strongly suggest you test your computer's configuration: https://events.livemeeting.com/LM2007test.htm to ensure you are running the most current version of Microsoft Office Live Meeting.
(update from 4/30)
SP2 is out, all information can be found here: Announcing Service Pack 2 (SP2) for Microsoft Project 2007 and Microsoft Project Server 2007
As announced by the Office Sustained Engineering team today, Service Pack 2 for the 2007 Microsoft Office System due to ship April 28th.
Office 2007 Service Pack 2 (SP2) includes updates for Project desktop and Project Server 2007 along with updates to the rest of the Office 2007 product family. Product updates for Project are:
Start planning for this major software update; please stay tune for more information on April 28th.
As announced by my colleague Doug McCutcheon: Project “P14” Readiness, Now Officially Microsoft Project 2010 – Be one of the first off the line!
Be one of the first off the line. Would you like to attend the Microsoft Project 2010 Ignite Airlift as an added value to the Microsoft Project Conference at no additional cost to you?
As an added value to the Project Conference registration at no additional cost to the conference ticket, you and your technical colleagues have been invited to attend the Microsoft Project 2010 Ignite Airlift which will be held on September 13-14, 2009 at the Phoenix Sheraton in Phoenix, Arizona, USA . This is a training workshop for EPM specialized partners and ISV’s who are looking for in-depth technical training on setting up the next EPM version: Project 2010.
During this two-day event, we will cover a wide variety of in-depth topics ranging from architecture, setup, deployment, migration, customization and development. This event is targeted towards experienced EPM consultants that deploy the Microsoft EPM solution on a day-to-day basis. Content will be delivered by members of the Microsoft product group and experts from the field. The event will complement the content that will be presented at the Microsoft Project Conference 2009.
Feel free to pass this invitation on.
Register at https://pcairlift.dynamiceventsreg.com/
If you have already registered or have questions.
Contact for more information, sponsorship & exhibition opportunities or registration changes?Microsoft Project Conference 2009 Customer Service +1 (800) 528-1668 - Toll Free (US & Canada Only)+1 (360) 253-2971 - Direct Registration Phone Number+1 (360) 254-1667 - Faxprojconf@microsoft.com – Email
As part of the Exchange 2010 announcement today: Microsoft Unveils Exchange 2010 With Public Beta we also announced a timeline for the next version of Office products (see First in Wave and Availability sections):
Microsoft Office 2010, Microsoft SharePoint Server 2010, Microsoft Visio 2010 and Microsoft Project 2010 are scheduled to enter technical preview in the third quarter of 2009 and release to manufacturing in the first half of 2010.
Note the name change to Project; the “Office” piece was removed (so we will ship a Microsoft Project Professional 2010, Microsoft Project Server 2010, for instance). More information from the SharePoint team on the new name change here.
To learn all about Project 2010, I encourage everyone to attend Microsoft Project Conference 2009 in September.