Jump to content

introducing UHFS


Recommended Posts

readme:

this little app tries to slipstream ms packages into a windows installation
(unlike /integrate of hft2 packages)

the idea is to analyze these packages as they are with the goal to be as
universal and accurate as possible (hence the name)

pros:
  - should work with all supported hotfix types
  - should work with all available languages
  - should work with various editions of a windows version
  - fileversioninfo is used to get the exact version
  - no duplicate files with different versions, driver cabinets are merged

cons:
  - relies on expand.exe, makecab.exe and MSICabExtract.exe
  - files need to be extracted to get fileversioninfo
  - the .inf parser implementation is done just by peeking at the files,
    at this state it might be partially wrong

limits:
  - supported packages are hotfix types 1 (.exe and .cab) and 2 (only .exe)
  - .msi support currently just for MSXML 4.0 Service Pack 2
  - at this state the whole installation is copied and extracted instead of
    modified since this is an experimental version (installation get huge!)
  - this is the first release, w2k pro mode is hardcoded. dont use other
    versions/editions at this time
  - inf conditions are not implemented
  - currently svcpack.inf is newly generated instead of modified
  - currently the process is uninterruptable so check your settings

i started this app last weekend, so its in a very early stage. youre welcome to try it and report back what happened ;)

im currently not 100% convinced that this is a successful approch (parsing the packages) since the inf files can get pretty complicated (eg conditions). let me know what you think of it.

my last log is inside the attached archive, take a look and you'll get the idea what this app is for and how it works. i only tested the packages reported in the log, so dont even think about throwing dx, netfx, wmp etc at it ;)

current issues:

when integrating ie6 first logon hangs (you can see the ie6 runonceex thing), this is because registerdll wont find some files. follow these steps:

- when logon hangs, press ctrl+alt+del and logout

- login again

- copy uhfs.inf from \i386 off the cd

- remove readonly flag

- edit header like this:

from

[Version]
Signature="$Windows NT$"
ClassGUID={00000000-0000-0000-0000-000000000000}
layoutfile=LAYOUT.INF

[Optional Components]
UHFS

[UHFS]
OptionDesc="UHFS combined inf"
Tip="UHFS combined inf"
Modes=0,1,2,3
CopyFiles=xxx
AddReg=xxx
DelReg=xxx
RegisterDlls=xxx

to

[Version]
Signature="$Windows NT$"

[DefaultInstall]
AddReg=xxx
DelReg=xxx
RegisterDlls=xxx

then save, rightclick it and chosse install

relogin

now ie and oe should report the rigth version

there're still tons of other issues because i just started looking at how the installation procedure works.

edit uhfs.ini to test my app

put hotfixes in the PATH_HF directory. subdirectories are ignored except "ie6setup" where you can put the whole ie6 installation (13 cabs)

regards

uhfs 0.0.1.0

Edited by noisehole
Link to comment
Share on other sites


oh, sfc is disabled at this stage. i dont wanna edit the installation, there're enough tools for that, but i couldnt find a reliable solution to edit the setupfiles and leave sfc intact afterwards. setupapi.dll is patched and sfcfiles.dll is replaced with an empty list of files.

im getting

Setting reg key HKLM\Software\Microsoft\Works\6.0\Calendar\CurSize
Error 5: Access is denied.

while inserting the rollup reg values. if i remove the calendar entries it works. any hints on that?

Link to comment
Share on other sites

TommyP's approach started as Win2k only and expanded to XP also. Now that we've got it to the point where Windows Update reports nothing needed, the idea was that parsing INF files would be the Next Big Thing to Try. I'm inclined to agree that this isn't ideal due to the fact that so many are dual 2k/xp.

Also, your custom INF file contents - make it nonoptional and then try to circumvent this hang problem by replacing axant.in_ or some other worthless INF file with your INF's contents to do the dirty work for you (and reboot too) so that the problem you cite below is taken care of by logon (only looking quickly).

Link to comment
Share on other sites

i started getting into this "setup modding business" when i found tommyp's script. it just works and he did a great job, but as a developer i just had to try the inf-parsing approch. the parsing itself works pretty well atm, im just not 100% sure how to integrate those results into the installation. eg you are suggesting to add my inf to syssetup.inf instead of sysoc.inf. ive no idea when exactly those files are executed by the installation ;) but thanks for the tip, ill have a try.

the multi-os hotfixes arent the problem, here's a snippet from the log

  analyzing IE6.0sp1-KB883939-Windows-2000-XP-x86-ENU.exe
  detected hft2 6.1.0022.4
  extracting...
  branched hf, using update\update_W2K.inf
  identified as Windows 2000 Hotfix - KB883939, enqueued with id 883939

what makes me doubtful are these things:

from the ur1 inf

 [ProductInstall.Conditional] 

   FileCondition= MDAC2X53X6310.Condition

 [MDAC2X53X6310.Condition]

   InstallFromSection=MDAC.Install.Section
   Operation=CustomFunction,UpdCustom.dll, UpdInstallMdac2X53X6310, MDAC2X53X6310.Section
   CopyFlags=SP_COPY_NEWER_OR_SAME | SP_COPY_REPLACEONLY

it calling a function from a dll thats included in the hotfix, and i guess i can just forget about doing so because it returns results based on the system it is executed on

another issue are all those different inf sections. is the hotfix exe reading all infsection and decides which of them to execute or is it looking for hardcoded ones? im currently taking the 2nd approch with these strings (and different suffixes)

ProductInstall.DontDelayUntilReboot
ProductInstall.CopyFilesAlways
ProductInstall
ProductInstall.128BitFiles
ProductInstall.ReplaceFilesIfExist

and as a result i get some fileoperations more than once. from the log

     updating qmgr.dll from v6.2.3630.2522 to v6.6.2600.1596
     ERROR: source file does not exist: qmgr.dll

this file should be present in 2 locations. i dont know how to handle that (do i have 1 fileop too much?)

regards

Link to comment
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.
×
×
  • Create New...