Welcome to MSFN

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


Explorer09

HFSLIP does not register UiAutomationCore.dll (in KB2564958)

24 posts in this topic

I tested this on HFSLIP 1.7.10 beta J v8, slipstreaming updates of Windows XP Professional (x86).

It seems like HFSLIP does not recognize the registry entries in the [OleAcc.Add.Reg] and the [uIACore.Add.Reg] sections in KB2564958 "update.inf" file. This makes the file UiAutomationCore.dll unregistered in the slipstreamed Windows.

(AFAIK, it is fine to ignore the [OleAcc.Add.Reg] section, because the Windows setup will add the entries automatically, when registering Oleacc.dll.)

To check this bug:

1. Let HFSLIP slipstream the KB2564958 update.

2. Install the HFSLIP'ed Windows XP on a computer or a virtual machine.

3. Open regedit, and find each of the following registry keys:

HKCR,AppID\{60a90a2f-858d-42af-8929-82be9d99e8a1}
HKCR,CLSID\{60a90a2f-858d-42af-8929-82be9d99e8a1}
HKCR,CLSID\{6e29fabf-9977-42d1-8d0e-ca7e61ad87e6}
HKCR,CLSID\{ff48dba4-60ef-4201-aa87-54103eef594e}
HKCR,Interface\{146C3C17-F12E-4E22-8C27-F894B9B79C69}
HKCR,Interface\{40CD37D4-C756-4B0C-8C6F-BDDFEEB13B50}
HKCR,Interface\{4ece4541-81d4-44ac-9df6-d199ef66f904}
HKCR,Interface\{C270F6B5-5C69-4290-9745-7A7F97169468}
HKCR,Interface\{E81D1B4E-11C5-42F8-9754-E7036C79F054}
HKCR,TypeLib\{8acc2016-04a3-4343-b8e1-1870e35d6a41}
HKCR,TypeLib\{944DE083-8FB8-45CF-BCB7-C477ACB2F897}

Expected result: All of these keys should exist, and contain values.

Actual result: They are all missing.

Despite this little bug, Windows Update can still detect the presence of the UiAutomationCore.dll, and the user won't be notified that KB2564958 did not install completely.

I have a simple workaround for this. On the installed, HFSLIP'ed Windows, you can run this command to have the DLL registered correctly:

regsvr32.exe uiautomationcore.dll

Or, on the HFSLIP'ed disc, put this line in the [HFSLIPREG] section of "I386\HFSLIPWU.INF":

HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce",KB2564958,,"regsvr32.exe /s uiautomationcore.dll"

0

Share this post


Link to post
Share on other sites

Thanks for the info.

I just make a small workaround using KB2564958's update.inf

Rename update.inf to KB2564958RegUpdate.inf

Comment out Line 1 to line 51

Then replace line 53 (which is [ProductInstall.GlobalRegistryChanges.Install] )

with below 3 lines.

[Version]
Signature = "$Windows NT$"

[DefaultInstall]

Put KB2564958RegUpdate.inf in HFSVCPACK folder

This will register the dlls as well as add an info entry to Uninstall & Hotfix info as defined in the inf to the registry.

HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB2564958
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB2564958

There is a missing %HOTFIX% in [strings] section

I just add

HOTFIX                = "Hotfix"

in the [strings] section

0

Share this post


Link to post
Share on other sites

There is a missing %HOTFIX% in [strings] section

I just add

HOTFIX                = "Hotfix"

in the [strings] section

The update.inf inside KB2564958 seems to be incomplete. Just look at the last line in the file. There's a substitute character, which mean that some text should be cut off after this mark.

I wonder if Microsoft noticed this when building that inf file?

Edited by Explorer09
0

Share this post


Link to post
Share on other sites

They are probably created automatically and M$ doesn't even check them very thoroughly. There are similar bugs in older Win2k updates too.

0

Share this post


Link to post
Share on other sites

tomasz86 is right, MS inf sometime also contains bugs.

KB2564958 when parsed by HFSLIP, seems to miss [ProductInstall.GlobalRegistryChanges.Install] section.

Below is KB2564958 when parsed by HFSLIP

You will notice

[DefaultInstall]
AddReg=Product.Add.Reg

that [Product.Add.Reg] is missing after that. Hence KB2564958 will failed to register the dll.

With or w/o sub character, if you modify accordingly in my 2nd post, it will also work.

HFSLP238.INF

0

Share this post


Link to post
Share on other sites

If registering uiautomationcore.dll is the only problem when slipstreaming the hotfix the following lines could be added to HFSLIP :POSTHFX section.

::KB2564958
IF EXIST WORK\I386E\uiautomationcore.dll (
ECHO>>WORK\NSFREGt.TXT uiautomationcore.dll
)

This adds the registration of uiautomationcore.dll to the HFSLIPWU.INF file :hello:

0

Share this post


Link to post
Share on other sites

If registering uiautomationcore.dll is the only problem when slipstreaming the hotfix the following lines could be added to HFSLIP :POSTHFX section.

::KB2564958
IF EXIST WORK\I386E\uiautomationcore.dll (
ECHO>>WORK\NSFREGt.TXT uiautomationcore.dll
)

This adds the registration of uiautomationcore.dll to the HFSLIPWU.INF file :hello:

I think, this is a pretty nice solution. But instead of managing this in the HFSLIP :POSTHFX section I will try to use a post-command:

HFSLIP_POST_KB2564958.cmd (in HFTOOLS)

@ECHO off
REM ---------------------------------------------------------------------------------
REM This batch fixes a problem caused by the incorrect updated.inf of KB2564958
REM
REM Because of this, the uiautomationcore.dll will not be registered.
REM
REM Put this script to HFTOOLS to avoid this problem.
REM ---------------------------------------------------------------------------------

IF EXIST WORK\I386E\uiautomationcore.dll (
ECHO>>WORK\NSFREGt.TXT uiautomationcore.dll
)

after a successfull test I will add this to the update-list / file-checker

0

Share this post


Link to post
Share on other sites

Hi Mimo

Could you also include in your script (HFSLIP_POST_KB2564958.cmd) the info if KB2564958 is slipped?

HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB2564958 
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB2564958

Without the registry info, I feel it is incomplete.

Also Automatic update might query the registry to determine what hotfix is currently installed.

Cheers

0

Share this post


Link to post
Share on other sites

I think that here there is no problem in the update itself. It's a bug (limitation) in HFSLIP which makes it parse the update.inf incorrectly.

HFSLIP uses a "fixed" list of AddReg entries. As easily expected, this leads to problems when nonstandard names are used as in this update. To fix the problem you need to modify this line in HFSLIP:

ECHO>>SOURCESS\I386\HFSLP!HFSLP!.INF AddReg=Product.Add.Reg,keys.add,MSI.AddReg,Actsetup.Reg,User.AddReg,Base.IE.AddReg,Common.Add.Reg,AppCompatSetup.reg,NoPrompt.AddReg,RegisterActiveSetup,Reg.WPD,MTP.AutoPlayRegistration,reg.devices,Reg.Codecs,Fraunhofer.Reg,V9Reg.Core,V9Reg.Core.AddOnly,V9Reg.Univ,WMP.ARP,V9.RegPUI,WMPAddReg.PUI,WMPAddReg.OSPUI,V9Reg.XP,WMP.SPAD,WMP.Reg.IEHard,Reg.WMDMHandler

and add the three sections present in this update like this:

ECHO>>SOURCESS\I386\HFSLP!HFSLP!.INF AddReg=Product.Add.Reg,keys.add,MSI.AddReg,Actsetup.Reg,User.AddReg,Base.IE.AddReg,Common.Add.Reg,AppCompatSetup.reg,NoPrompt.AddReg,RegisterActiveSetup,Reg.WPD,MTP.AutoPlayRegistration,reg.devices,Reg.Codecs,Fraunhofer.Reg,V9Reg.Core,V9Reg.Core.AddOnly,V9Reg.Univ,WMP.ARP,V9.RegPUI,WMPAddReg.PUI,WMPAddReg.OSPUI,V9Reg.XP,WMP.SPAD,WMP.Reg.IEHard,Reg.WMDMHandler,General.Add.Reg,OleAcc.Add.Reg,UIACore.Add.Reg

This is why using fixed names is really bad...

Edited by tomasz86
0

Share this post


Link to post
Share on other sites

This is why using fixed names is really bad...

Fixed names can't be too bad, that line in the script has been there for years! Blame MSFT for force feeding you a new binary & blame MSFT for changing their INF structure after all these years. If WU just wants that file registered, just put it into hfexpert\codecs and call it a day.

0

Share this post


Link to post
Share on other sites
Fixed names can't be too bad.

They may not be bad per se but the problem is that because so many things are hard coded in the script there always has to be someone adjusting it to support new nonstandard updates. "Adjusting" in this case means adding more fixed names ;)

I'd never rely on M$ here :ph34r:

Edited by tomasz86
0

Share this post


Link to post
Share on other sites

Could you also include in your script (HFSLIP_POST_KB2564958.cmd) the info if KB2564958 is slipped?

HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB2564958 
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB2564958

I don't think that registry-entries could be set with a HFSLIP-POST-command. But an additional reg-file could do that job.

Without the registry info, I feel it is incomplete.

Also Automatic update might query the registry to determine what hotfix is currently installed.

But it's consistent. In general there is no uninstall-info or hotfix-info if you make a Windows-XP-CD with HFSLIP (or do I miss something?). So I would not prefer this but you could use a reg-file (in HFSVCPACK).

Microsofts automatic update doesn't need this info for Windows XP (but they changed it a long time ago for Office 2003 - for Office 2003 this registry-info is needed now).

...

and add the three sections present in this update like this:

ECHO>>SOURCESS\I386\HFSLP!HFSLP!.INF AddReg=Product.Add.Reg,keys.add,MSI.AddReg,Actsetup.Reg,User.AddReg,Base.IE.AddReg,Common.Add.Reg,AppCompatSetup.reg,NoPrompt.AddReg,RegisterActiveSetup,Reg.WPD,MTP.AutoPlayRegistration,reg.devices,Reg.Codecs,Fraunhofer.Reg,V9Reg.Core,V9Reg.Core.AddOnly,V9Reg.Univ,WMP.ARP,V9.RegPUI,WMPAddReg.PUI,WMPAddReg.OSPUI,V9Reg.XP,WMP.SPAD,WMP.Reg.IEHard,Reg.WMDMHandler,General.Add.Reg,OleAcc.Add.Reg,UIACore.Add.Reg

Does this work for this problem here? Without negative side effects?

Is this (maybe with a further ini-section-name) also a solution for this: nLite misses a registry entry when integrating KB2641653 (XP x86)

Edited by Mim0
0

Share this post


Link to post
Share on other sites

@Mim0

I haven't tested it but I'm sure that adding "win32k.Add.Reg.Session" to the line:

ECHO>>SOURCESS\I386\HFSLP!HFSLP!.INF AddReg=Product.Add.Reg,keys.add,MSI.AddReg,Actsetup.Reg,User.AddReg,Base.IE.AddReg,Common.Add.Reg,AppCompatSetup.reg,NoPrompt.AddReg,RegisterActiveSetup,Reg.WPD,MTP.AutoPlayRegistration,reg.devices,Reg.Codecs,Fraunhofer.Reg,V9Reg.Core,V9Reg.Core.AddOnly,V9Reg.Univ,WMP.ARP,V9.RegPUI,WMPAddReg.PUI,WMPAddReg.OSPUI,V9Reg.XP,WMP.SPAD,WMP.Reg.IEHard,Reg.WMDMHandler,General.Add.Reg,OleAcc.Add.Reg,UIACore.Add.Reg,win32k.Add.Reg.Session

will solve the problem.

This kind of change shouldn't cause any side effects.

0

Share this post


Link to post
Share on other sites

Hi guys,

I published a new HFSLIP on my little web-site with the hint from tomasz86 regarding USP/W2K, Thx to him!!!

But... ths problem described here and it's solution (previous posting) needs at least some tests. Unfortunately I have the next days no time for this.

If anyone could test this (and probably also regarding this : nLite misses a registry entry when integrating KB2641653 (XP x86) ) it would help me. Otherwise I will test it later. :)

CU, Mimo

0

Share this post


Link to post
Share on other sites

Hi guys,

I published a new HFSLIP on my little web-site with the hint from tomasz86 regarding USP/W2K, Thx to him!!!

But... ths problem described here and it's solution (previous posting) needs at least some tests. Unfortunately I have the next days no time for this.

If anyone could test this (and probably also regarding this : nLite misses a registry entry when integrating KB2641653 (XP x86) ) it would help me. Otherwise I will test it later. :)

CU, Mimo

Mimo,

I can't find the new HFSLIP on your page. Did you forget to upload it?

Thank you.

M2GD

0

Share this post


Link to post
Share on other sites

By the way, Mim0, the fix for USP5 is not only for the newer versions as you wrote:

Fixed handling of newer USP5-versions for Windows 2000

but even the last version of USP5.1 from 2006 is affected by it :whistle:

0

Share this post


Link to post
Share on other sites

I think, this is a pretty nice solution. But instead of managing this in the HFSLIP :POSTHFX section I will try to use a post-command:

HFSLIP_POST_KB2564958.cmd (in HFTOOLS)

@ECHO off
REM ---------------------------------------------------------------------------------
REM This batch fixes a problem caused by the incorrect updated.inf of KB2564958
REM
REM Because of this, the uiautomationcore.dll will not be registered.
REM
REM Put this script to HFTOOLS to avoid this problem.
REM ---------------------------------------------------------------------------------

IF EXIST WORK\I386E\uiautomationcore.dll (
ECHO>>WORK\NSFREGt.TXT uiautomationcore.dll
)

after a successfull test I will add this to the update-list / file-checker

Hey Mimo,

Have you done anything about this? I think that more should be done with this file. In its current form it doesn't follow the 8.3 filename format and therefore slipstreaming it will break a DOS based installation (WINNT.EXE). It should be renamed to something like "uiaucore.dll" and then renamed to its original name during Windows setup. HFSLIP should add the required lines to TXTSETUP.SIF in order to do it, ex.:


[SourceDisksFiles]
uiaucore.dll = 1,,,,,,,2,0,0,uiautomationcore.dll

0

Share this post


Link to post
Share on other sites

...

In its current form it doesn't follow the 8.3 filename format and therefore slipstreaming it will break a DOS based installation (WINNT.EXE). It should be renamed to something like "uiaucore.dll" and then renamed to its original name during Windows setup.

...

The inf file in KB2564958 uses the abbreviation "UIACore". Perhaps we should rename to "UIACore.dll" instead of "uiaucore.dll"?

0

Share this post


Link to post
Share on other sites

Of course, it can be "UIAcore" ;) It doesn't matter as long as it's 8.3.

0

Share this post


Link to post
Share on other sites

BTW, I would like to write a patch to the HFSLIP code, but its coding style is so poor that I don't know where to patch.

0

Share this post


Link to post
Share on other sites

Am I too late to reply to these two posts? Anyway...

Without the registry info, I feel it is incomplete.

Also Automatic update might query the registry to determine what hotfix is currently installed.

But it's consistent. In general there is no uninstall-info or hotfix-info if you make a Windows-XP-CD with HFSLIP (or do I miss something?). So I would not prefer this but you could use a reg-file (in HFSVCPACK).

Microsofts automatic update doesn't need this info for Windows XP (but they changed it a long time ago for Office 2003 - for Office 2003 this registry-info is needed now).

Just for the info. The automatic update (and Windows Update too) in Windows XP (x86) needs only this info

"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KBxxxxxxx","Installed"

to see whether these updates are installed:

KB961118, KB968389, KB2570947, KB2603381, KB2659262, KB2686509

For other updates, the "Installed" registry can be deleted without problems. In fact I do so in my slipstreamed disc.

...

and add the three sections present in this update like this:

ECHO>>SOURCESS\I386\HFSLP!HFSLP!.INF AddReg=Product.Add.Reg,keys.add,MSI.AddReg,Actsetup.Reg,User.AddReg,Base.IE.AddReg,Common.Add.Reg,AppCompatSetup.reg,NoPrompt.AddReg,RegisterActiveSetup,Reg.WPD,MTP.AutoPlayRegistration,reg.devices,Reg.Codecs,Fraunhofer.Reg,V9Reg.Core,V9Reg.Core.AddOnly,V9Reg.Univ,WMP.ARP,V9.RegPUI,WMPAddReg.PUI,WMPAddReg.OSPUI,V9Reg.XP,WMP.SPAD,WMP.Reg.IEHard,Reg.WMDMHandler,General.Add.Reg,OleAcc.Add.Reg,UIACore.Add.Reg

Does this work for this problem here? Without negative side effects?

Is this (maybe with a further ini-section-name) also a solution for this: nLite misses a registry entry when integrating KB2641653 (XP x86)

Yes, it will work without side effects. But it may cause a side effect if you apply this solution on my thread about KB2641653.

The reason is that the KB2641653 case is a conditional AddReg entry.

0

Share this post


Link to post
Share on other sites

Yes, it will work without side effects. But it may cause a side effect if you apply this solution on my thread about KB2641653.

The reason is that the KB2641653 case is a conditional AddReg entry.

Is this registry entry present at all in a clean system? Correct me if I'm wrong but I think that it's not. Therefore you can safely always add the registry settings from KB2641653 when it's slipstreamed.

0

Share this post


Link to post
Share on other sites

Okay, I finally understood the code, and made a patch for it.

Here it is: (in unified diff format)

--- old/hfslip-1.7.10_beta_J_v10.cmd	2012-08-25 17:27:08.000000000 +0800
+++ new/hfslip-1.7.10_beta_J_v10.cmd 2012-11-04 23:39:23.343750000 +0800
@@ -2392,6 +2392,11 @@
ECHO>>WORK\HFSSDF.TXT MUAuth.cab=1&ECHO>>WORK\HFS_SOFTDIST.TXT AuthCabs\7971f918-a847-4430-9279-4a52d1efe18d\MUAuth.cab,MUAuth.cab
)
)
+IF EXIST WORK\I386E\uiautomationcore.dll (
+ REN "WORK\I386E\uiautomationcore.dll" uiacore.dll
+ ECHO>>SOURCESS\I386\TXTSETUP.SIF uiacore.dll = 1,,,,,,,2,0,0,uiautomationcore.dll&ECHO>>SOURCESS\I386\DOSNET.INF d1,uiacore.dll
+ ECHO>>WORK\HFSLIPCMDP1.TXT regsvr32.exe /s %%SYSTEMROOT%%\system32\uiautomationcore.dll
+)
IF EXIST WORK\I386E\updroots.exe (
IF EXIST WORK\I386E\authroots.sst (
REN WORK\I386E\authroots.sst authroot.sst

For those who don't know what this patch does, here's some brief explanation:

These 5 lines are going to be added in the :POSTHFX section of the HFSLIP. The :POSTHFX section includes rules to handle unusual MS updates and hotfixes. This section is run before HFSLIP copies the disc content from SOURCE to SOURCESS directory.

These 5 new lines handles the special file "uiautomationcore.dll" by doing these:

1. Rename "uiautomationcore.dll" to "uiacore.dll" (see post #18 and #19 for why)

2. Write to TXTSETUP.SIF and DOSNET.INF to note the presence of "uiacore.dll". (The file does not exist in the original Win XP or 2003)

3. Add a command to run this during the Windows installation:

regsvr32.exe /s %SYSTEMROOT%\system32\uiautomationcore.dll

This line is in "WORK\HFSLIPCMDP1.TXT", which will be copied and appended to "SOURCESS\I386\SVCPACK\HFSLIP.CMD" at the later part of HFSLIP.

Note:

This patch does not work with KB2564958-x64 update! The update for x64 has additional files that needs to be handled, and I don't know how to write code for that.

EDIT: Perhaps this one will work also:

--- old/hfslip-1.7.10_beta_J_v10.cmd	2012-08-25 17:27:08.000000000 +0800
+++ new/hfslip-1.7.10_beta_J_v10.cmd 2012-11-05 08:45:29.953125000 +0800
@@ -2392,6 +2392,11 @@
ECHO>>WORK\HFSSDF.TXT MUAuth.cab=1&ECHO>>WORK\HFS_SOFTDIST.TXT AuthCabs\7971f918-a847-4430-9279-4a52d1efe18d\MUAuth.cab,MUAuth.cab
)
)
+IF EXIST WORK\I386E\uiautomationcore.dll (
+ REN "WORK\I386E\uiautomationcore.dll" uiacore.dll
+ ECHO>>SOURCESS\I386\TXTSETUP.SIF uiacore.dll = 1,,,,,,,2,0,0,uiautomationcore.dll&ECHO>>SOURCESS\I386\DOSNET.INF d1,uiacore.dll
+ ECHO>>WORK\NSFREGt.TXT uiautomationcore.dll
+)
IF EXIST WORK\I386E\updroots.exe (
IF EXIST WORK\I386E\authroots.sst (
REN WORK\I386E\authroots.sst authroot.sst

Edited by Explorer09
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.