Manual Integration

Questions about Update Pack making? Ask here.
Post Reply
belkhal
Posts: 4
Joined: Sat Sep 13, 2008 9:46 pm

Manual Integration

Post by belkhal » Sat Sep 13, 2008 10:01 pm

Hi all,

I've tried searching for this; but I'm at a complete loss on what keyword(s) to use in the search to find it.

I've been trying to understand what is -really- going on when you integrate hotfixes into the source.

From what I understand:

Manual installation involves sticking the hotfixes under [SetupHotfixesToRun] in svcpack.inf. This is akin to installing the hotfixes one-by-one after XP has been installed. This is not integration.

Using the /integrate option replaces some binaries in the I386 folder, adds the CAT file AND the original EXE into the SVCPACK folder, and adds a few entries to both the [SetupHotfixesToRun] and [ProductCatalogsToInstall].

From what I understand, the /integrate option makes it such that the hotfix is no longer "installed" -- instead, the updates already exist in the source and is copied over during installation. Then, why do we still need to include the EXE's and entries within [SetupHotfixesToRun]? The best answer I have found so far is that it needs the execute the hotfix in order to run the .inf file found with the hotfix. This adds registry settings required by the hotfix.

Then, there's nLite and hfslip -- both of which do something similar to the /integrate option.

Unsatisfied with the idea of only partially integrating a hotfix and needing to include and run the EXE anyway, I kept looking...

Then, I found RyanVM's Update Pack. I poked through the configuration to try to understand what is going on -- and lo-and-behold, I found that the SVCPACK folder contained ONLY CAT files. I found a bunch of files added to the I386 folder. I also discovered a bunch of registry settings within the RVMUpPck.inf...

I'm assuming that Ryan's figured out how to more completely integrate the hotfixes than the /integrate method (or nLite and hfslip). Digging around some more, I found this article:

http://support.microsoft.com/kb/828930/

This explained the extra files in I386 -- but I still have yet to find out how he found the registry settings needed by each hotfix? Was this simply done by installing each hotfix into a clean test system and then examining the registry? Is there more that I'm unaware of?

Thanks

User avatar
5eraph
Site Admin
Posts: 4618
Joined: Tue Jul 05, 2005 9:38 pm
Location: Riverview, MI USA

Post by 5eraph » Sun Sep 14, 2008 1:04 am

If you decompress an update package you'll almost always find an UPDATE folder containing INF files. The INF used depends on the service pack and branch that are to be used--Ryan uses the QFE branch. Within that INF the [Product.Add.Reg] section contains the registry entries that are added. The INF can also contain command lines, and the complete list of files and where they're to be installed in case any files new to the ISO must be added.

belkhal
Posts: 4
Joined: Sat Sep 13, 2008 9:46 pm

Post by belkhal » Sun Sep 14, 2008 2:52 am

So, I ripped apart one of the hotfixes:

Code: Select all

WindowsXP-KB951698-x86-ENU.exe /x
And I ended up with something like this:

Code: Select all

spmsg.dll
spuninst.exe
SP2GDR\quartz.dll
SP2QFE\quartz.dll
SP3GDR\quartz.dll
SP3QFE\quartz.dll
update\branches.inf
update\eula.txt
update\KB951698.CAT
update\spcustom.dll
update\update.exe
update\update.ver
update\updatebr.inf
update\update_SP2GDR.inf
update\update_SP2QFE.inf
update\update_SP3GDR.inf
update\update_SP3QFE.inf
update\updspapi.dll
Ignoring the difference between GDR and QFE, lets suppose we go with the QFE's. So, I stick SP3QFE\quartz.dll into I386 (assuming its an SP3 CD). Then, I stick KB951698.CAT into I386\SVCPACK.

Now, getting into the INF files, I would look through update_SP3QFE.inf:

Code: Select all

[Version]
    Signature                 = "$Windows NT$"
    LanguageType              = %LangTypeValue%
    NtBuildToUpdate           = 2600
    NtMajorVersionToUpdate    = 5
    NtMinorVersionToUpdate    = 1
    MaxNtBuildToUpdate        = 2600
    MaxNtMajorVersionToUpdate = 5
    MaxNtMinorVersionToUpdate = 1
    MinNtServicePackVersion   = 768
    MaxNtServicePackVersion   = 768
    ThisServicePackVersion    = 768
    CatalogFile               = %SP_SHORT_TITLE%.cat

[ProductCatalogsToInstall]
    %SP_SHORT_TITLE%.cat, update\%SP_SHORT_TITLE%.cat

[ProductInstall.ReplaceFilesIfExist]
    CopyFiles=System32.files

[ProductInstall.CopyFilesAlways]
    CopyFiles=CopyAlways.Cache.files

[ProductInstall.GlobalRegistryChanges.Install]
    AddReg=Product.Add.Reg

[ProductInstall.GlobalRegistryChanges.ReInstall]
    AddReg=Product.Add.Reg

[Save.Reg.For.Uninstall]
    HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup","LogLevel"
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%
    HKLM,SOFTWARE\Microsoft\Updates\Windows XP\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%

[Product.Add.Reg]
    HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup", "LogLevel", 0x10001, 0
    HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%","ParentKeyName",0x00000000,"OperatingSystem"
    HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%","ParentDisplayName",0x00000000,"%PARENT_DISPLAY_NAME%"
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed",0x10001,1
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Comments",0,%SP_TITLE%
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Backup Dir",0,""
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Fix Description",0,%SP_TITLE%
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed By",0,""
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Installed On",0,""
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Service Pack",0x10001,%SERVICE_PACK_NUMBER%
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%,"Valid",0x10001,1
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"Flags",0,""
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"New File",0,""
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"New Link Date",0,""
    HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\%SP_SHORT_TITLE%\File 1\,"Old Link Date",0,""
    HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%,"ReleaseType",0,%SECURITY_UPDATE%
    HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%SP_SHORT_TITLE%,"RegistryLocation",0,"HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%"
    HKLM,SOFTWARE\Microsoft\Updates\Windows XP\SP%SERVICE_PACK_NUMBER%\%SP_SHORT_TITLE%,"Description",,%SP_TITLE%

[IE7.AdditionalSettings.Save.Reg.For.Uninstall]

[IE8.AdditionalSettings.Save.Reg.For.Uninstall]

[DestinationDirs]
    System32.files=11               ; %windir%\system32 (replace if exist)
    CopyAlways.Cache.files=65619        ; %windir%\system32\DllCache (copy even if don't exist)

[System32.files]
    quartz.dll,SP3QFE\quartz.dll

[CopyAlways.Cache.files]
    quartz.dll,SP3QFE\quartz.dll

[ArchiveCatalogFilesOnly]
    %SP_SHORT_TITLE%.cat

[DirectoriesToCleanUp.Uninstall]

[SourceDisksNames]
    1=%ServicePackSourceFiles%

[SourceDisksFiles]
    SP3QFE\quartz.dll=1

[UninstallSections]
    GlobalRegistryChanges, GlobalRegistryChanges.UnInstall
    Add.Reg, Add.Reg.Uninstall
    Del.Reg, Del.Reg.Uninstall

[Del.Reg.Uninstall.PRE.SP2]

[Strings]
    ProxyRegKey=SYSTEM\CurrentControlSet\Services\WSPSrv\Parameters
    IeRegKey=Software\Microsoft\Windows\CurrentVersion\App Paths\iexplore.exe
    HyperRegKey=SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\hypertrm.exe
    EudcRegKey=Software\Microsoft\Windows\CurrentVersion\App Paths\eudcedit.exe
    AdmtRegKey=SOFTWARE\Mission Critical Software\DomainAdmin
    TsclientRegKey=SOFTWARE\Classes\conman.exe\DefaultIcon
    PATH_ZONES="Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones"
    SERVICE_PACK_NUMBER     = 4
    HelpLink = "http://support.microsoft.com?kbid=951698"
    URLInfoAbout = "http://support.microsoft.com"
    BUILDTIMESTAMP = 1
    EXPIRETIMESTAMP = 20080706.101727
    CONN_WIZ           = "Connection Wizard"
    UPDATE                = "Update"
    HOTFIX                = "Hotfix"
    SECURITY_UPDATE       = "Security Update"
    LangTypeValue           = 0x09
    WSEDIR                  = "1033"
    TSCLIENTDIR             = "Terminal Services Client"
    PORTUGAL                = "Portugal"
    FALKLANDS               = "Falkland Islands"
    LCID                    = "0409"
    W32ID                   = "0009"
    ACCESSDIR               = "accessories"
    ACCESSDIRNAME           = "accessories" ;; accessories folder name is different from the display name in case of PLK, FIN and ELL
    PEAP-DispName         = "Protected EAP (PEAP)"
    EAPMSCHAP-DispName    = "Secured password (EAP-MSCHAP v2)"
    WIRELESS-DispName     = "Wireless"
    ServicePackSourceFiles  = "Windows XP Hotfix Source Files"
    SP_SHORT_TITLE          = "KB951698"
    SP_TITLE                = "Security Update for Windows XP (KB951698)"
    PARENT_DISPLAY_NAME     ="Windows XP - Software Updates"
    LOC_UPDATE="Update"
    LOC_CRITICALUPDATE="Critical Update"
    LOC_HOTFIX="Hotfix"
    LOC_SECURITY_UPDATE="Security Update"
    WUCUN_TS_JOBFILE        = "windows critical update notification.job"
    BITS_DISPLAY_NAME       = "Background Intelligent Transfer Service"
    BITS_DESCRIPTION        = \
"Transfers files in the background using idle network bandwidth. If the service is stopped, features such as Windows Update, and MSN Explorer will be unable to automatically download programs and other information. If this service is disabled, any services that explicitly depend on it may fail to transfer files if they do not have a fail safe mechanism to transfer files directly through IE in case BITS has been disabled."
    BITS_CLASS_NAME         = "Background Intelligent Transfer Control Class 1.0"
    LEGACY_BITS_CLASS_NAME  = "Legacy Background Intelligent Transfer Control Class"
    AU_DESCRIPTION          = "Enables the download and installation of Windows updates. If this service is disabled, this computer will not be able to use the Automatic Updates feature or the Windows Update Web site."
    AU_DISPLAY_NAME         = "Automatic Updates"
    DispStrCum_MP9          = "This software update can only be applied to Windows Media Player 9. If you have Windows Media Player 9 installed but still see this message, your version already includes this software update."
    DispStrPreReq_MP9       = "This software update can only be applied to Windows Media Player 9. If you see this message, you do not have Windows Media Player 9 installed and cannot install this software update."
    MSI_DISPLAY_NAME        = "Windows Installer"
    MSI_DESCRIPTION         = "Adds, modifies, and removes applications provided as a Windows Installer (*.msi) package. If this service is disabled, any services that explicitly depend on it will fail to start."
    CancelEventType         = "Cancel Report"
    MainCancelIntroString   = "Thank you for reporting the Request. When you click ""Send Report"" button, data concerning why install failed will be sent to Microsoft"
    MainCancelDetailsLink   = "See what the installer report contains."
    MainCancelReportBtn     = "&Send Report"
    DetailsCancelHeader     = "Report Information"
    DetailsCancelBody       = \
"Sending this report helps us improve the user experience. We will statistically process the collected data to understand what initiated the install failure. This information will help us reduce the number of install failures caused by applying updates."
    GMT_PLUS_02_D_DESC     = "(GMT+02:00) Athens, Beirut, Istanbul, Minsk"
    HTTP="HTTP"
    HTTP_DESCRIPTION="This service implements the hypertext transfer protocol (HTTP). If this service is disabled, any services that explicitly depend on it will fail to start."
    HTTPFILTER="HTTP SSL"
    HTTPFILTER_DESCRIPTION=\
"This service implements the secure hypertext transfer protocol (HTTPS) for the HTTP service,  using the Secure Socket Layer (SSL).  If this service is disabled, any services that explicitly depend on it will fail to start."
    WEBOC_SCRIPT="Allow scripting of Internet Explorer Webbrowser control"
    MsSHARED = "Microsoft Shared"
    OLEDB = "Ole DB"
    ADO = "ado"
    MSADC = "msadc"
    DAO = "DAO"
    MSSOAPBIN = "MSSoap\Binaries"
    MSSOAPBINRES = "MSSoap\Binaries\Resources\1033"
    ODBC_DATA_SOURCE_NAME = "ODBC Data Source"
    SHAREDACCESS_SERVICE_NAME = "Windows Firewall/Internet Connection Sharing (ICS)"
    Svc-ALG-Description       = "Provides support for 3rd party protocol plug-ins for Internet Connection Sharing and the Windows Firewall."
    Svc-Ip6Fw-DispName          = "IPv6 Windows Firewall Driver"
    Svc-Ip6Fw-Description       = "Provides intrusion prevention service for a home or small office network."
    NotOnACPowerMsg= "This Service Pack requires the machine to be on AC Power before setup starts."
    A6Blocked= "The version of Windows you have installed does not match the update you are trying to install."
    SharedComputerToolMsg= \
"Service Pack 3 Setup has been canceled because Microsoft Shared Computer Toolkit for Windows XP is not compatible with this version of Windows. Before you can continue, you must: 1) Uninstall Microsoft Shared Computer Toolkit 2) (Optional) Install Windows SteadyState, the newer version of Microsoft Shared Computer Toolkit. For more detailed information, go to the Shared Access page on the Microsoft Web site."
    RDPMUIBlockedMsg= "Service Pack 3 Setup has been canceled because XP SP3 cannot be installed over RDP 6.0 MUI PACK (Update for Windows XP (KB925877)) . Before you can continue, you must Uninstall KB925877."
    WinflpBlockedMsg= "Microsoft Windows XP Professional Service Pack 3 cannot be applied to Windows Fundamentals for Legacy PCs (WinFLP). A unique SP3 update package for WinFLP will be made available at download.microsoft.com."
    WEPOSBlockedMsg= "Microsoft Windows XP Professional Service Pack 3 cannot be applied to Windows Embedded for Point of Service (WEPOS). A unique SP3 update package for WEPOS will be made available at download.microsoft.com."
    PreReq_MSI_3 = "This fix only installs over MSI 3.0"
    PreReq_MSI_31 = "This fix only installs over MSI 3.1"
    NOTATABLET = "This hotfix can only be installed on a Tablet PC"
    ELK_VERSION=2
    ELK_VERSION_NEWER_ERROR="Setup has determined that the contents of this update are already available on this system."
    ELK_LOCALE_INUSE_201a = \
"Bosnian (Cyrillic, Bosnia and Herzegovina) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."

    ELK_MUI_INUSE_201a    = \
"Bosnian (Cyrillic, Bosnia and Herzegovina) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    ELK_LOCALE_INUSE_0464 = "Filipino (Philippines) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_0464    = \
"Filipino (Philippines) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    ELK_LOCALE_INUSE_046e = "Luxembourgish (Luxembourg) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_046e    = \
"Luxembourgish (Luxembourg) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    ELK_LOCALE_INUSE_0463 = "Pashto (Afghanistan) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_0463    = \
"Pashto (Afghanistan) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    ELK_LOCALE_INUSE_0462 = "Frisian (Netherlands) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_0462    = \
"Frisian (Netherlands) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    ELK_LOCALE_INUSE_047a = "Mapudungun (Chile) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_047a    = "Mapudungun (Chile) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."
    ELK_LOCALE_INUSE_0461 = "Nepali (Nepal) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_0461    = "Nepali (Nepal) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."
    ELK_LOCALE_INUSE_085d = "Inuktitut (Latin, Canada) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_085d    = \
"Inuktitut (Latin, Canada) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    ELK_LOCALE_INUSE_083c = "Irish (Ireland) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_083c    = "Irish (Ireland) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."
    ELK_LOCALE_INUSE_047c = "Mohawk (Mohawk) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_047c    = "Mohawk (Mohawk) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."
    ELK_LOCALE_INUSE_0417 = "Romansh (Switzerland) is selected as the language for standards and formats, or for non-Unicode programs.  This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm to select a different language."
    ELK_MUI_INUSE_0417    = \
"Romansh (Switzerland) language support for menus and dialogs is installed on your system. This language is not supported prior to Security Update for Windows XP (KB951698).  Please see readmesp.htm for more information to uninstall this language support."

    KLT_148               = "Bosnian Cyrillic"
    KLT_149               = "Inuktitut Latin"
    KLT_150               = "Luxembourgish"
    KLT_151               = "Nepali"
    KLT_152               = "Pashto"
    BEETHOVEN_NINTH_NAME            = "Beethoven's Symphony No. 9 (Scherzo).wma"
    MYMUSIC_SAMPLES_DIR             = "Sample Music"
    NEW_STORIES_NAME                = "New Stories (Highway Blues).wma"
    InvalidIEVersion="The version of Internet Explorer you have installed does not match the update you are trying to install."
    TSC_PACKAGE_EXPIRED="The pre-release version of Remote Desktop Connection has expired. To download the full version of Remote Desktop Connection, go to Windows Update or contact your system administrator."
    KWL_MEDIAPLAYER_LNK_TITLE="Media Player Center"
    KWL_MEDIAPLAYER_LNK_TOOLTIP="Media Player Center"
    KWL_MESSENGER_LNK_TITLE="Messenger Center"
    KWL_MESSENGER_LNK_TOOLTIP="Messenger Center"
    Caucasus_Display="(GMT+04:00) Yerevan"
    Azerbaijan_Std="Azerbaijan Standard Time"
    Azerbaijan_Dlt="Azerbaijan Daylight Time"
    Azerbaijan_Display="(GMT+04:00) Baku"
    SA_Pacific_Display="(GMT-05:00) Bogota, Lima, Quito, Rio Branco"
    GTB_Display="(GMT+02:00) Athens, Bucharest, Istanbul"
    E_Europe_Display="(GMT+02:00) Minsk"
    Middle_East_Std="Middle East Standard Time"
    Middle_East_Dlt="Middle East Daylight Time"
    Middle_East_Display="(GMT+02:00) Beirut"
    Jordan_Std="Jordan Standard Time"
    Jordan_Dlt="Jordan Daylight Time"
    Jordan_Display="(GMT+02:00) Amman"
    Pacific_Display="(GMT-08:00) Pacific Time (US & Canada)"
    Central_M_Std="Central Standard Time (Mexico)"
    Central_M_Dlt="Central Daylight Time (Mexico)"
    Mountain_M_Std="Mountain Standard Time (Mexico)"
    Mountain_M_Dlt="Mountain Daylight Time (Mexico)"
    Central_M_Display="(GMT-06:00) Guadalajara, Mexico City, Monterrey - New"
    Mexico_Old_Display="(GMT-06:00) Guadalajara, Mexico City, Monterrey - Old"
    Pacific_M_Std="Pacific Standard Time (Mexico)"
    Pacific_M_Dlt="Pacific Daylight Time (Mexico)"
    Pacific_M_Display="(GMT-08:00) Tijuana, Baja California"
    Mountain_M_Display="(GMT-07:00) Chihuahua, La Paz, Mazatlan - New"
    Mexico_2_Old_Display="(GMT-07:00) Chihuahua, La Paz, Mazatlan - Old"
    Namibia_Std="Namibia Standard Time"
    Namibia_Dlt="Namibia Daylight Time"
    Namibia_Display="(GMT+02:00) Windhoek"
    Myanmar_Display="(GMT+06:30) Yangon (Rangoon)"
    Georgian_Std="Georgian Standard Time"
    Georgian_Dlt="Georgian Daylight Time"
    Georgian_Display="(GMT+03:00) Tbilisi"
    Greenwich_Display="(GMT) Casablanca, Monrovia, Reykjavik"
    Central_Brazilian_Std="Central Brazilian Standard Time"
    Central_Brazilian_Dlt="Central Brazilian Daylight Time"
    Central_Brazilian_Display="(GMT-04:00) Manaus"
    Montevideo_Std="Montevideo Standard Time"
    Montevideo_Dlt="Montevideo Daylight Time"
    Montevideo_Display="(GMT-03:00) Montevideo"
    Caucasus_Common_Display="(GMT+04:00) Caucasus Standard Time"
    Armenian_Std="Armenian Standard Time"
    Armenian_Dlt="Armenian Daylight Time"
    Venezuela_Std="Venezuela Standard Time"
    Venezuela_Dlt="Venezuela Daylight Time"
    Venezuela_Display="(GMT-04:30) Caracas"
    SA_Western_Display="(GMT-04:00) La Paz"
    SA_Eastern_Display="(GMT-03:00) Georgetown"
    Argentina_Std="Argentina Standard Time"
    Argentina_Dlt="Argentina Daylight Time"
    Argentina_Display="(GMT-03:00) Buenos Aires"
    WSMAN_ServiceDisplay="Windows Remote Management (WS-Management)"
    WSMANOOB_WSMAN_ServiceDescription="Allows access to management information from local and remote machines."
    PowerShell_CurrentlyInstalled=\
"Cannot install this version of the product. You must first remove any earlier versions of Windows PowerShell(TM) 1.0 before you can install this version.  Please click OK to close the Setup Wizard. Next open the Add/Remove Programs Control Panel, uninstall any versions of the Windows PowerShell(TM) 1.0, and run the Windows PowerShell(TM) 1.0 setup again."
    PowerShell_CLR_NOT_INSTALLED=\
"Cannot install/uninstall Windows PowerShell(TM) 1.0 because it requires an updated version of the .NET Framework 2.0. Please install .NET Framework 2.0 RTM from http://go.microsoft.com/fwlink/?linkid=57014&lcid=0x409 and rerun Windows PowerShell(TM) 1.0 Setup"
    PowerShell_SCFN="Lucida Console"
    PowerShell_SCFS="12"
    PowerShell_SCDir="Windows PowerShell 1.0"
    PowerShell_SCName="Windows PowerShell"
    PowerShell_ShortCutRelNote="Release Notes"
    PowerShell_ShortCutGettingStarted="Getting Started"
    PowerShell_ShortCutUserGuide="User Guide"
    PowerShell_ShortCutQRef="Quick Reference"
    PowerShell_Comments="Windows PowerShell(TM) 1.0"
    PowerShell_Culture=en
    PowerShell_InstallLangPackId=1033
    PowerShell_ReleaseNotesDir=
    InstallMSXML6="Please install Microsoft Core XML Services (MSXML) 6.0 before installing this package. To obtain MSXML6, please visit http://download.microsoft.com and search for MSXML6."
    napagent_displayname="Network Access Protection Agent"
    napagent_description="Allows windows clients to participate in Network Access Protection"
    hkmsvc_displayname= "Health Key and Certificate Management Service"
    hkmsvc_description="Manages health certificates and keys (used by NAP)"
    eaphost_displayname="Extensible Authentication Protocol Service"
    eaphost_description="Provides windows clients Extensible Authentication Protocol Service"
    eapqec_displayname="EAP Quarantine Enforcement Client"
    eapqec_description="Provides EAP based enforcement for NAP"
    dot3svc_displayname="Wired AutoConfig"
    dot3svc_description="This service performs IEEE 802.1X authentication on Ethernet interfaces"

[LinkItems.Create.Uninstall]

[GlobalRegistryChanges.UnInstall]
    AddReg=Add.Reg
    DelReg=Del.Reg

[Del.Reg.Uninstall]

[Add.Reg.Uninstall]

[Configuration]
    noPNPfiles=1
    InstallationType        = Hotfix
    InstallLogFileName      = %SP_SHORT_TITLE%.log
    UnInstallLogFileName    = %SP_SHORT_TITLE%Uninst.log
    UnInstallDirName        = $NtUninstall%SP_SHORT_TITLE%$
    EventLogKeyName         = NtServicePack
    EventLogDllName         = spmsg.dll

[PreRequisite.Uninstall]
Finding the same hotfix from Ryan's pack:

Code: Select all

[KB951698.AddReg]
HKLM,"%SP4UPDATES%\KB951698","Description",0,"%SECUPDATE% (KB951698)"
HKLM,"%SP4UPDATES%\KB951698","InstalledBy",0,"%NAME%"
HKLM,"%SP4UPDATES%\KB951698","InstalledDate",0,"%VERSION%"
HKLM,"%SP4UPDATES%\KB951698","Type",0,"Update"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","BuildCheckSum",0,"149553"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","BuildDate",0,"Wed May 07 01:04:15 2008"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","FileName",0,"quartz.dll"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","Location",0,"%11%"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","Version",0,"6.5.2600.5596"
HKLM,"%HFREGPATH%\KB951698","Backup Dir",0,""
HKLM,"%HFREGPATH%\KB951698","Comments",0,"%SECUPDATE% (KB951698)"
HKLM,"%HFREGPATH%\KB951698","Fix Description",0,"%SECUPDATE% (KB951698)"
HKLM,"%HFREGPATH%\KB951698","Installed",0x10001,1
HKLM,"%HFREGPATH%\KB951698","Installed By",0,"%NAME%"
HKLM,"%HFREGPATH%\KB951698","Installed On",0,"%VERSION%"
HKLM,"%HFREGPATH%\KB951698","Service Pack",0x10001,4
HKLM,"%HFREGPATH%\KB951698","Valid",0x10001,1
HKLM,"%HFREGPATH%\KB951698\File 1","Flags",0,""
HKLM,"%HFREGPATH%\KB951698\File 1","New File",0,""
HKLM,"%HFREGPATH%\KB951698\File 1","New Link Date",0,""
HKLM,"%HFREGPATH%\KB951698\File 1","Old Link Date",0,""
I can see that parts of the [Product.Add.Reg] were used to generate the INF inside RVMUpPck.Inf -- but not all of it. Where can I go to find out more about how the update_SP3QFE.inf file works?

belkhal
Posts: 4
Joined: Sat Sep 13, 2008 9:46 pm

Post by belkhal » Sun Sep 14, 2008 3:13 am

I kind of answered my own question here. Here's a reference for INF files:

http://msdn.microsoft.com/en-us/library/ms790223.aspx
http://msdn.microsoft.com/en-us/library/ms790193.aspx

But, still. It seems like quite a few entries in Ryan's INF file that were not extracted from the update_SP3QFE.INF file:

Code: Select all

HKLM,"%SP4UPDATES%\KB951698","Description",0,"%SECUPDATE% (KB951698)"
HKLM,"%SP4UPDATES%\KB951698","InstalledBy",0,"%NAME%"
HKLM,"%SP4UPDATES%\KB951698","InstalledDate",0,"%VERSION%"
HKLM,"%SP4UPDATES%\KB951698","Type",0,"Update"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","BuildCheckSum",0,"149553"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","BuildDate",0,"Wed May 07 01:04:15 2008"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","FileName",0,"quartz.dll"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","Location",0,"%11%"
HKLM,"%SP4UPDATES%\KB951698\Filelist\0","Version",0,"6.5.2600.5596" 
Were these simply added by experience? Or..?

User avatar
code65536
Posts: 735
Joined: Wed Mar 14, 2007 2:58 pm
Location: .us
Contact:

Post by code65536 » Sun Sep 14, 2008 7:29 pm

Not all registry entries come from INF files. The the hotfix installer itself, processes that it might spawn, or any self-registrations that may take place can all add registry entries, none of which would be documented in the hotfix INF. The only way to know for sure is to install the hotfix and see what changed.

The important thing to note here is that vast majority of hotfixes don't require registry changes. Only a few do (and there are a few that do nothing other than update the registry, like the killbit and timezone fixes). Most of the registry changes are just boilerplate added for bookkeeping to keep qfecheck happy (and Windows Update, in a few select cases). The WMP11 slipstreamer, for example, doesn't bother with these boilerplate entries.
My addons: CmdOpen - HashCheck - Notepad2 - MS Runtimes - DirectX

Into the breach, meatbags!

User avatar
5eraph
Site Admin
Posts: 4618
Joined: Tue Jul 05, 2005 9:38 pm
Location: Riverview, MI USA

Post by 5eraph » Mon Sep 15, 2008 2:26 pm

That last set of registry entries you mention, belkhal, are added by the update package when it is executed, as code65536 points out. Strictly speaking they're not necessary for the update to function, but they do work with the QFECheck.exe utility to help determine if an update needs to be reinstalled by providing filenames and version numbers to check against existing files.

I always include the registry entries in the [Product.Add.Reg] section in my update pack, even when similar entries are left out of Ryan's pack or the packs of others. I simply don't know (and don't have a programming background extensive enough to really find out for myself) how file registration works, and scanning the registry is something I've never been good at. I tend to capture thousands of changes to the registry that I can't sort through, which is especially true of x64 which doubles the registry entries to track due to 32-bit emulation.

belkhal
Posts: 4
Joined: Sat Sep 13, 2008 9:46 pm

Post by belkhal » Mon Sep 15, 2008 2:42 pm

So, I experimented a little with this using ProcessMonitor, and filtered to registry changes made by update.exe.

For x86, it didn't seem too bad. I'll post my results in a bit.

Post Reply