51

(19 replies, posted in Other)

Here is a perl script to parse your driver inf files :

#/usr/bin/perl

use Data::Dumper;
use File::Find;
use CGI qw(:standard);

my $q = new CGI();

$| = 1;

my $ROOT = 'C:/dev/infs';
my $DEBUG = $q->param('debug');

#
# Find all .INF within $ROOT subdir
#
my @FILES = ();
sub wanted { push @FILES ,$File::Find::name if $File::Find::name =~ /\.inf$/i; }

if ($q->param('subdir') eq 'no') { @FILES = glob("$ROOT/*.inf"); } 
else { find(\&wanted, $ROOT);}

my %INI = ();
my $regex = qr/^\[([^\]]+)]+\s*?\n    # [Section Header]
               (.*?)\n         # Section body
               (?=^\[|\Z)      # [Next Section Header or EOF]
              /xsm;            # multiline support

my $regex2 = qr/^([^=]+)=([^\n]+)\n/xsm;   # key=value
 
foreach my $i (@FILES) {

   printf "\nParsing $i...\n" ; #if $DEBUG;
   local $/ = undef;                       # \n treated as normal char
   open (FOO, "<$i") || die $!;
   $_ = <FOO>;
   close(FOO);

   %INI=();
   $INI{"\U$1\E"}{tmp} = $2 while /$regex/g;

   foreach my $key (sort keys %INI) {
   	  print "KEY = [$key] :\n" if $DEBUG;
   	  #1 while $INI{$key}{tmp} =~ s/\"//g;         # wipe out quotes
   	  1 while $INI{$key}{tmp} =~ s/\;.*//g;       # wipe out comments
   	  1 while $INI{$key}{tmp} =~ s/^\n$//gxsm;    # wipe out empty lines 
   	  %temp = ();
   	  $temp{$key}{$1} = $2 while $INI{$key}{tmp} =~ /$regex2/g;
   	  while(my($k, $v) = each %{$temp{$key}}) {
   	     $k =~ s/^\s+//; $k =~ s/\s+$//;
   	     $v =~ s/^\s+//; $v =~ s/\s+$//;
   	     $INI{$key}{$k} = $v;
   	     print "  $k => $v\n" if $DEBUG == 2;
   	  }
      delete $INI{$key}{tmp};
   }

   #[Version]
   #Provider=%CANON%   --+
   #[Strings]            |--> Provider = "Canon" (=Manufacturer)
   #CANON="Canon"     <--+

   #[Manufacturer]
   # "Canon" = Canon,NTx86.5.1 									=> change to Canon.NTx86.5.1 for [Canon.NTx86.5.1]
   #[Canon.NTx86.5.1]
   #"Canon S9000" = CNMS9000XP, LPTENUM\CanonS9000EEDB, Canon_S9000
   map { $INI{MANUFACTURER}{$_} =~ s/,/\./ } keys %{$INI{MANUFACTURER}};
   
   $provider="";
   
   if ($INI{VERSION}{Provider} =~ /%(\S+)%/) {    # $1 = CANON
      if (exists $INI{STRINGS}{$1} ) {            # => "Canon"
         $provider = $INI{STRINGS}{$1};
         print "Strings [$1] = $provider\n" if $DEBUG;
      }
      elsif (exists $INI{MANUFACTURER}{$1}) {
      	$provider = $INI{MANUFACTURER}{$1};
      }
   }
   else { $provider = $INI{VERSION}{Provider}; }
   
   print "PROVIDER : $INI{VERSION}{Provider} => $provider\n" if $DEBUG;
   ($manufacturer) = values %{$INI{MANUFACTURER}};                 # Canon.NTx86.5.1 => CANON.NTX86.5.1
   print "MANUFACTURER : $manufacturer\n" if $DEBUG;
   print "CLASS : $INI{VERSION}{Class}\n" if $DEBUG;
   
   if (exists $INI{ uc $manufacturer }) {
   	  print "DEVICES : ", Dumper \%{$INI{ uc $manufacturer }} if $DEBUG;
      map { $dev = (( /^%(.*)%$/ ) ? $INI{STRINGS}{$1} : $_) ;        #  %MN130.DeviceDesc% => "Microsoft(R) PCI Adapter MN-130"
      	    printf "%10s\t%10s\t%15s\t%20s\t%20s\n", 
   	               $provider, 
   	               $INI{VERSION}{Class},
   	               $INI{VERSION}{CatalogFile}, 
   	               $INI{VERSION}{DriverVer}, 
   	               $dev;
       } sort keys %{$INI{ uc $manufacturer }};
   }
}

1/ Install ActivePerl : http://www.activestate.com/Products/ActivePerl/

2/ Run it (ouputs html) :
perl parse_ini.pl infroot=c:\my_inf_files > index.html

3/ it's "out of the box", so not perfect.

Check file SVCPACK.IN_ in your I386 directory before & after slipstream :
Uncompress it : expand SVCPACK.IN_ SVCPACK.INF

It should be like that (once uncompressed) :

[Version]
Signature="$Windows NT$"
MajorVersion=5
MinorVersion=1
BuildNumber=2600

[SetupData]
CatalogSubDir="\i386\SVCPACK"

[ProductCatalogsToInstall]
KB888111.CAT
KB921401.CAT

[SetupHotfixesToRun]
chud wrote:

Actually almost nothing works in this driver pack due to file extensions, was anything in it tested at all, or am I missing something??

I've tested some I use ... and others I didn't.
In that case, this DP needs some cleanup ... but I don't have spare time to do it.

I've quickly tested sub-dirs "01" and "02" manually : all drivers installed (no errors "file not found").
Concerning sub-dir "17" : file "hplj2300.CF_" isn't found ... All these cab weren't changed : I guess the driver coming from HP has some files missing.

If you have some time to test all other sub-dirs, any help is welcome : test in VMware for example, repack DP, and share it. smile smile

Welcome to the wonderful world of nvidia drivers :d :-s
Look at sticky post about "nvidia problems".

Some info here.
You can download drivers on ATI/AMD website.

Progress bar is done, it looks like this (using a modified screen), or like that if you're using 'standard'  XP blue screen. Sorry, but there's text ... and no logo.

@ruudboek : I was using before DP Mass 6.08 with DP base 6.086.
Yes, The new DP Base 7.012 & Mass 7.01 solved my problem (in my case). Please note that I don't use nvraid, so others have to test ...
However, I can test it on my nf4-6150 with 2 hard disks ... If I have some time, I'll do that tomorrow.
Thanks.

Did you check if SVCPACK.IN_ is corrupted ?
With latests DP Base, I've got this problem, and reported it.

I've tested on nForce4-ultra and nForce4 6150 (no RAID on both) : it works ! smile

Look at this post !

61

(76 replies, posted in DriverPack Mass Storage)

I've found these two projects which packs nForce drivers :
1/ MEI's nWare Release 06.10
2/ nForce 11.10 Unified Remix

These drivers are not slipstream-able :-s ... however in MEI's post on page 2 it seems that the neverending BSOD is solved smile.

I had this problem and solved it manually. Look at this post !

i have to dis-agrea here though,  there are so many better ways.. 1 for instance is a compiled ' Visual basic '  program,  i would recommend an early version like VB5 though, im not sure what versions will run this early, and in windows 2000, as it MAY lack vb-runtime files.

I've tested an compiled AutoIT script, and it works. No other files are needed other than the program itself.

- but i wonder if its worth this much trouble....

Add 3rd party DriverPacks ... and you could wait more than 5 minutes during this blue screen asking yourself "WTF is going on....".
So ... yes ... knowing what is going on is better ...

Why not replace completely PRESETUP.CMD with an AutoIT made PRESETUP.EXE which does the commands ?
On the splash screen we can show "decompression driverpack xxx"
I've compiled the fake setup to show the PRESETUP (option : "mySHELLEXECUTEINFO.nShow=SW_SHOW;") ... then any program ran from this fake setup is shown.

Or ... still use PRESETUP.CMD with :
a/ fake setup showing the PRESETUP.CMD
b/ but with Signet cmdow.exe remplacement
c/ inside PRESETUP.CMD use an AutoIT "splash.exe" like the one i've coded in the other post.
I've already done a/ and c/ ... I need to add b/ and test it.

AutoIT "splash.exe" source (message is shown depending file size, given as first parameter on the command line) :

If $CmdLine[0] = 1 Then
    Dim $Message, $WaitFor, $Size
    $Size = FileGetSize($CmdLine[1])
    $WaitFor = $Size / 4000
    $Message = "Decompressing DP: " & @CRLF & $CmdLine[1]
    SplashTextOn("",$Message,"700","150","-1","-1",33,"","20","20")
    Sleep($WaitFor)
    SplashOff()
Else
    MsgBox(4096, "Information", "How to use : " & @CRLF & @ScriptName & "  Message_to_show", 5)
EndIf

Maybe you can help, see this post about "splash screen" during DP extract.

Here is an updated DP for Canon Inkjet printers (old release v6.09).

Using WinMerge tool I was able to optimize DP size (printers using same driver version can be put together, binary files are identical), almost 200 Mb less ! smile

New supported printers (since DP v6.09) are : IP1300 / IP1700 / IP3300 / IP4300 / IP6700D / IX4000 / IX5000.
Drivers used are all multilingual (English, German, French, Italian, Spanish ...) when Canon releases such a driver.
DP directory structure is compatible with 3rd party DriverPacks : D\3\P\C\Ixx ("xx" = numbers).
DP is very huge : 846 Mb uncompressed, 8844 files. 108 Mb 7-zipped.

Supported printers :

Dir   Printer(s) & driver version
---------------------------------
I01 : Canon CP10, CP100, CP200, CP220, CP300, CP330 (04/28/2005, 3.2.0.1)
I02 : Canon CP400, CP500 (06/07/2004, 3.0.0.0)
I03 : Canon CP510, CP710 (06/20/2005, 3.2.1.2)
I04 : Canon CP600 (10/08/2004, 3.1.0.0)
I05 : Canon DS700 (08/13/2004, 1.80.3.10)
I06 : Canon DS810 (07/04/2005, 1.90.2.90)
I07 : Canon I470D, I9100 (01/23/2003, 1.63.2.8)
I08 : Canon I475D (10/17/2003, 1.73.2.30)
I09 : Canon I560 (02/03/2004, 1.73.2.80)
I10 : Canon I70, I250, I320, I350, I450, I455, I550, I850, I6500 (11/30/2005, 1.90.3.90)
I11 : Canon I80 (08/16/2004, 1.80.2.93)
I12 : Canon I865 (06/10/2004, 1.73.2.90)
I13 : Canon I905D (10/17/2003, 1.71.2.60)
I14 : Canon I950 (11/18/2002, 1.62.2.2)
I15 : Canon I960 (07/30/2003, 1.73.2.0)
I16 : Canon I965 (02/03/2004, 1.73.2.80)
I17 : Canon I990 (02/03/2004, 1.73.2.80)
I18 : Canon I9950 (02/03/2004, 1.75.2.30)
I19 : Canon IP1000 (05/18/2004, 1.80.2.50)
I20 : Canon IP1200 (05/11/2005, 1.90.2.20)
I21 : Canon IP1300, IP1700 (07/31/2006, 1.95.2.12)
I22 : Canon IP1500 (05/18/2004, 1.80.2.50)
I23 : Canon IP1600, IP2200 (05/11/2005, 1.90.2.20)
I24 : Canon IP2000 (06/21/2004, 1.80.2.70)
I25 : Canon IP3000 (06/28/2004, 1.80.3.0)
I26 : Canon IP3300 (06/30/2006, 1.95.2.60)
I27 : Canon IP4000 (05/17/2004, 1.80.2.50)
I28 : Canon IP4000R (07/08/2004, 1.80.3.0)
I29 : Canon IP4200 (07/19/2005, 1.90.2.60)
I30 : Canon IP4300 (06/15/2006, 1.95.2.70)
I31 : Canon IP5000 (06/30/2004, 1.80.2.90)
I32 : Canon IP5200, IP5200R, IP6210D, IP6220D, IP6600D (07/04/2005, 1.90.2.90)
I33 : Canon IP6000D (06/30/2004, 1.80.2.90)
I34 : Canon IP6700D (06/30/2006, 1.95.2.10)
I35 : Canon IP8500 (07/08/2004, 1.80.3.0)
I36 : Canon IP90 (11/17/2004, 1.85.2.20)
I37 : Canon IX4000, IX5000 (01/24/2006, 1.93.2.10)
I38 : Canon S100 (11/05/2001, 1.50.2.6)
I39 : Canon S200, S300 (05/06/2002, 1.52.2.0)
I40 : Canon S330 (04/05/2002, 1.52.2.0)
I41 : Canon S400, S450, S500, S600, S630, S4500 (11/08/2001, 1.50.2.6)
I42 : Canon S520, 530D, S750 (09/18/2002, 1.62.2.1)
I43 : Canon S6300 (09/18/2002, 1.61.2.0)
I44 : Canon S800 (04/05/2002, 1.52.2.0)
I45 : Canon S820, S830D, S900 (09/18/2002, 1.61.2.0)
I46 : Canon S9000 (09/18/2002, 1.61.2.0)

Download link : DP Printers Canon Inkjet v6.11.05
MD5 Hash : D96F9AFEFE63DDE64A856EE2E374236

67

(4 replies, posted in Other)

kbxxxxxx.exe /? will give you help.
To slipstream kb in your I386 : kbxxxxxx.exe /integrate:path_to_i386

68

(32 replies, posted in Feature Requests)

I've just installed MinGW with GCC .... compiled with "mySHELLEXECUTEINFO.nShow=SW_SHOW;" ... and it works : cmd.exe windows is shown ! smile
That's not user-friendly now ... but using cmdow.exe to hide the window should work ... and I'll try again with my custom splash.exe to see if I can see "decompressing DP XYZ".

69

(32 replies, posted in Feature Requests)

I found the original thread ... and C source code smile. Look at this post !

Compiling a new fake setup.exe with "mySHELLEXECUTEINFO.nShow=SW_SHOW;" should work...

70

(32 replies, posted in Feature Requests)

If there was an error, I never saw it as nothing was shown.

Looking in MSFN forums, I found the explanation : the fake setup.exe was coded to hide all processes ran from presetup.cmd.
I remember that another fake setup.exe ("for debugging purposes") could be downloaded ... and that particular version was able to show any window ran from presetup.cmd.

Now, I'll try your hack ...

71

(32 replies, posted in Feature Requests)

I coded myself an AutoIt script to show "decompressing DriverPacks" ... and added compiled executable to PRESETUP.CMD ... but the window was not shown ...
I think that's because PRESETUP.CMD is ran from modified SETUP.EXE which hiddens all processes ran from PRESETUP.CMD.

I modified PRESETUP.CMD with a "for" loop for each DP to decompress ... and in the loop I call "splash.exe %dpname%" with :

If $CmdLine[0] = 1 Then
    Dim $Message, $WaitFor, $Size
    $Size = FileGetSize($CmdLine[1])
    $WaitFor = $Size / 4000
    $Message = "Decompressing DP: " & @CRLF & $CmdLine[1]
    SplashTextOn("",$Message,"700","150","-1","-1",33,"","20","20")
    Sleep($WaitFor)
    SplashOff()
Else
    MsgBox(4096, "Information", "How to use : " & @CRLF & @ScriptName & "  Message_to_show", 5)
EndIf

I have almost all DriverPacks since the beginning.
Which release of 6.08 do you want ?

Thanks, file completely uploaded. smile

DriverPack : Printers HP 7.05.15
(MD5 Hash: BF1FE4F455E6BE7E905375986FE0BAD8)
Decompressed Size: 63.5 MB
Compressed Size: 31.5 MB
RootDIR: D\3\P\H

Changelog :
2007-04-29 : updated DP from 6.10.19 checked & work fine
2007-05-15 : updated DP with latest HP universal driver v4.0. Lots of old drivers removed.

Supported printers :

Sub-dir 01
----------
UNIVERSAL PRINTING PCL 5 (04/06/2007, 60.071.546.00, WHQL) [Multilanguage]
More info : http://www.hp.com/go/upd

HP LaserJet/Color LaserJet : CM1015mfp, 1150, 1160, 1200 , 1300, 1320, 2100, 2200,
2300, 24x0, P2015, 2500, 2550, 2605, P2700, 3000, 301x, P3005, 3020, M3027, 3030,
M3035, 3052AiO, 3050 AiO, 3055AiO, 3200, 3300, 3300mfp, 3390 AiO, 3392 AiO, 3700,
3800, 4000, CP4005, 4050, 4100, 4100mfp, 4200, 4240, 4250, 4300, 4345, M4345, 4350,
4500, 4550, 4600, 4610, 4650, 4700, 4730mfp, CM4730mfp, 5000, M5025, M5035, 5100,
5200, 5500, 5550, 8000, CM8050 Color MFP with Edgeline Technology, CM8060 Color
MFP with Edgeline Technology, 8100,  8150, 8150mfp, 9000, 9000mfp, 9040, 9050,
9050mfp, 9055mfp, 9065mfp, 9500, 9500mfp.

HP Business Inkjet/Officejet : 2250, 2280, 2300,
2600, 2800, 3000, 9100 all-in-one.

Supported by HP postscript emulation driver edition only :
HP Color LaserJet 2500 and 2550 printers, 2800 all-in-one; HP Business Inkjet 2800 printer


Sub-dir 02
----------
HP DESKJET 840C (09/19/2001, 4.3.0.0, WHQL) 
HP DESKJET 930C (09/19/2001, 4.3.0.0, WHQL) 
HP DESKJET 990C (09/19/2001, 4.3.0.0, WHQL) 


Sub-dir 03
----------
hpp1010u USB MICROSOFT USB PRINTING SUPPORT (WHQL) 


Sub-dir 04
----------
hp1020u USB MICROSOFT USB PRINTING SUPPORT (WHQL) 


Sub-dir 05
----------
HP LASERJET 1100 (03/01/2002, 4.3.2.201, WHQL) 


Sub-dir 06
----------
HP Color LaserJet 1500 (04/10/2003, 1.00.1913.0, WHQL) 


Sub-dir 07
----------
hpc2600u USB MICROSOFT USB PRINTING SUPPORT (WHQL)

Harddrive used on nForce2-400 was IDE and it did BSOD. I've tried install OS twice, and it did the same. Then I switch back to original XP install without DriverPacks integrated, then I manually installed nForce drivers 5.11 (latest version which is WHQL on nForce2).