just a minor update v0.3.6...

extraction is done by un7zip.exe now.


Windows 7 is supported although untested really.

view readme.txt in file.

http://www.mediafire.com/?mmvgdtjam05


this project is now abandoned due to lack of interest by me and the community. This will be the last update.


v0.3.6 Delphi source code
http://www.mediafire.com/?mbgoj3wmtzl

sorry but I have ADD so I lose interest from time to time.
I updated the link in the first post.
The previous included presetup.cmd file was wrong. It referenced un7zip which I eliminated.

I updated the info as well. When I originally coded it for Vista packs, muiz used a different naming scheme.
I did NOT recode this but to use it with Vista packs I provided the info how.
Vista driverpacks must be named...
Vistax64Drivers_blablabla.7z with the root folder being Vistax64Drivers or...
Vistax86Drivers_blablabla.7z with the root folder being Vistax86Drivers

so basically to use muiz's Vista packs you have to repack them and rename them...
I repacked his lan pack and it updated my lan card (Vista x64).

re ssx4life's comment. you see the command window because I use 7za.exe for the extraction. I found it to be faster.
The source code is on the bottom of the first page. You could recode and compile it if you like.

3

(14 replies, posted in Software)

OverFlow wrote:

how much faster was the self extracting 7z files?
I belive they show a progress bar when they extract?

perhaps we can have speed and a progress bar...

They do show a progress bar. It was the first working example of progress bars during presetup.
I think they are faster but you tell me.

The below file has three files in it.

run DriverConverter.exe in a folder with the .7z driverpacks. They will be converted to .exe files. They must be named as downloaded not as base renames them. (it can be modified)
The conversion process is very fast. It's as fast as your computer can copy a file. It's as fast as base when it copies the files to the new names.

run extract-only.cmd to extract the driverpacks to %systemdrive% for a quick demonstration of the extraction process.

a replacement presetup.cmd is included if you want to build an install disc.


http://rapidshare.com/files/137801987/D … r.zip.html


try it and let me know.


The file DriverConvertor.exe is itself a self extractor. Extract the contents with 7zip to view the batch file.

I changed the above link to rapidshare.

5

(12 replies, posted in Software)

if you use {$APPTYPE CONSOLE} the console window is visible. using {$APPTYPE GUI} hides it.

In the interest of good faith here is my source code for v0.3.5.

I give it to the world as open source. feel free to use it as you will.

some code is borrowed from examples on the web. google is our friend.


http://rapidshare.com/files/135945442/d … c.zip.html


note: I'm not a coder by day. this was actually the first GUI app I ever made. (not including the few Vista sidebar gadgets I made which are html/jscript)

7

(12 replies, posted in Software)

this is one I made a little while ago. written in Delphi.

the first one will show dialogs if errors. The second lacks the dialogs but will be a smaller file. third creates a log file in systemroot.
to debug change...
{$APPTYPE GUI}
to...
{$APPTYPE CONSOLE}

to debug presetup.cmd change...
SW_HIDE
to...
SW_SHOWNORMAL

Compile it in Delphi.

USE AT OWN RISK!

with dialogs...

program setup;

{$APPTYPE GUI}

uses
  SysUtils, Windows, ShellAPI, Dialogs;

{$R *.RES}

  procedure ShellExecute_AndWait(FileName: string; Params: string; Visible: DWORD);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    ExInfo.lpVerb := 'open';
    ExInfo.lpParameters := PChar(Params);
    lpFile := PChar(FileName);
    nShow := Visible;
  end;
  if ShellExecuteEx(@exInfo) then
    Ph := exInfo.HProcess
  else
  begin
    // if error
    Exit;
  end;
  WaitForSingleObject(ExInfo.hProcess, INFINITE);

  CloseHandle(Ph);
end;

var
  setupExe, setuporgExe, setupoldExe, cmdParams : String;
  i : Integer;
  
begin
   
    setupExe := 'setup.exe';
    setupoldExe := 'setupold.exe';
    setuporgExe := 'setuporg.exe';

    cmdParams := ParamStr(1);
    if ParamCount > 1 then
    begin
      for i := 2 to ParamCount do
        cmdParams := cmdParams+' '+ParamStr(i);
    end;

    if not RenameFile(setupExe, setupoldExe) then
        ShowMessage('Error renaming setup to setupold.');

    if not RenameFile(setuporgExe, setupExe) then
        ShowMessage('Error renaming setuporg to setup.');

    if FileExists('presetup.cmd') then
        ShellExecute_AndWait(PChar('presetup.cmd'), PChar('nada'), SW_HIDE)
    else
        ShowMessage('Error! no presetup.cmd file.');

    if not FileExists(setupExe) then
        ShowMessage('Error! no setup.exe file.');

    ShellExecute_AndWait(PChar('setup.exe'), PChar(cmdParams), SW_SHOWNORMAL);

end.

without dialogs...

program setup;

{$APPTYPE GUI}

uses
  SysUtils, Windows, ShellAPI;

{$R *.RES}

  procedure ShellExecute_AndWait(FileName: string; Params: string; Visible: DWORD);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    ExInfo.lpVerb := 'open';
    ExInfo.lpParameters := PChar(Params);
    lpFile := PChar(FileName);
    nShow := Visible;
  end;
  if ShellExecuteEx(@exInfo) then
    Ph := exInfo.HProcess
  else
  begin
    // if error
    Exit;
  end;
  WaitForSingleObject(ExInfo.hProcess, INFINITE);

  CloseHandle(Ph);
end;

var
  setupExe, setuporgExe, setupoldExe, cmdParams : String;
  i : Integer;
  
begin
   
    setupExe := 'setup.exe';
    setupoldExe := 'setupold.exe';
    setuporgExe := 'setuporg.exe';

    cmdParams := ParamStr(1);
    if ParamCount > 1 then
    begin
      for i := 2 to ParamCount do
        cmdParams := cmdParams+' '+ParamStr(i);
    end;

    if RenameFile(setupExe, setupoldExe) then;

    if RenameFile(setuporgExe, setupExe) then;

    if FileExists('presetup.cmd') then
        ShellExecute_AndWait(PChar('presetup.cmd'), PChar('nada'), SW_HIDE);    

    ShellExecute_AndWait(PChar('setup.exe'), PChar(cmdParams), SW_SHOWNORMAL);

end.

creates a log file in systemroot...

program setup;

{$APPTYPE GUI}

uses
  SysUtils, Windows, ShellAPI;

{$R *.RES}

  procedure ShellExecute_AndWait(FileName: string; Params: string; Visible: DWORD);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    ExInfo.lpVerb := 'open';
    ExInfo.lpParameters := PChar(Params);
    lpFile := PChar(FileName);
    nShow := Visible;
  end;
  if ShellExecuteEx(@exInfo) then
    Ph := exInfo.HProcess
  else
  begin
    // if error
    Exit;
  end;
  WaitForSingleObject(ExInfo.hProcess, INFINITE);

  CloseHandle(Ph);
end;

var
  setupExe, setuporgExe, setupoldExe, cmdParams, winDir : String;
  i : Integer;
  logFile : TextFile;
  
begin
    winDir := GetEnvironmentVariable('SystemRoot');
    AssignFile(logFile, winDir+'\presetup.log');
    ReWrite(logFile);
    WriteLn(logFile, '::::::::: Presetup Log File :::::::::');
    WriteLn(logFile, 'Fake setup.exe file © 2008 jaws1975');
    WriteLn(logFile, '');
    WriteLn(logFile, 'Initializing presetup...');

    setupExe := 'setup.exe';
    setupoldExe := 'setupold.exe';
    setuporgExe := 'setuporg.exe';

    WriteLn(logFile, 'Preparing commandline parameters to pass to real setup.exe...');
    cmdParams := ParamStr(1);
    if ParamCount > 1 then
    begin
      for i := 2 to ParamCount do
        cmdParams := cmdParams+' '+ParamStr(i);
    end;

    WriteLn(logFile, 'Renaming setup.exe to setupold.exe...');
    if not RenameFile(setupExe, setupoldExe) then
        WriteLn(logFile, '   error renaming setup.exe to setupold.exe...')
    else
        WriteLn(logFile, '   renamed setup.exe to setupold.exe...');

    WriteLn(logFile, 'Renaming setuporg.exe to setup.exe...');
    if not RenameFile(setuporgExe, setupExe) then
        WriteLn(logFile, '   error renaming setuporg.exe to setup.exe...')
    else
        WriteLn(logFile, '   renamed setuporg.exe to setup.exe...');

    WriteLn(logFile, 'Launching presetup.cmd...');
    if FileExists('presetup.cmd') then
        ShellExecute_AndWait(PChar('presetup.cmd'), PChar('nada'), SW_HIDE);

    if not FileExists(setupExe) then
        WriteLn(logFile, 'ERROR! setup.exe missing...')
    else
        WriteLn(logFile, 'Launching real setup.exe with parameters...');
    WriteLn(logFile, '   '+cmdParams);
    CloseFile(logFile);

    ShellExecute_AndWait(PChar('setup.exe'), PChar(cmdParams), SW_SHOWNORMAL);
    
end.

removing {$APPTYPE GUI} will cause it not to work. it says gui but there is no screen output.

use it or modify it as you like.

basically what it does is renames setup.exe to setupold.exe then rename setuporg.exe to setup.exe. it then launches presetup.cmd and waits for it to finish. it then launches the real setup.exe. It must wait for the real setup.exe to finish before the fake setup.exe closes.

I tried deleting setupold.exe but it would not delete when I tried.

agni wrote:

When I run driverupdater with the presetup switch it does not detect any driverpacks.
But when I run it normally it detects them.
I am on a x86 machine.

Please help.

Sorry. I made a bunch of changes last update and I didn't test "presetup".

It's fixed now!

update at first post.

I also changed the presetup timeout from 60 seconds to 30 seconds. The timer will stop if user interaction detected.

Echo_Platoon wrote:

jaws1975 - Have you figured out how to include a countdown timer for your version?  I'd really like to have that option, so it could keep the Windows install unattended if the user doesn't deselect certain DriverPacks within the given amount of time.

It does that already. When launched from presetup.cmd you pass the parameter "presetup". That tells it to not install drivers but extract only and if no interaction within 60 seconds it will auto extract all driverpacks. Use the included presetup.cmd file to prevent any problems.

Did you test it and it not work?

Updated to v0.3.4

a few changes...

DPsFnshr.exe is not used when installing drivers. DriverUpdater.exe will remove all temporary and driver files after installation. This eliminates errors for unsupported systems.
DPsFnshr.exe is kept in the x86 archive because it is still used during an OS install using presetup.cmd.
I moved presetup.cmd to the bin folder. You must use it in your install disc replacing the one in your i386 folder.

If installing XP drivers they can be named as downloaded or as base renames them.
XP x64 drivers must be named starting "x64DP" and the root folder must be "x64DP" also.
for Vista driverpacks they must be as Muiz has created them.

it will only allow drivers intended for your Operating System to be shown and installed.

It is compatible with XP, 2000, 2003, Vista and 2008. x86 or x64. Windows 2008 will show as being Vista. (difficult to differentiate the two)

tested in Vista x64 and XP x86 only.


update at first post.
updated info at first post as well.

has anybody tried these??????????
zero feedback so far.
am I wasting my time?

OverFlow wrote:

good job! smile

did you try muiz's Vista packs with it yet?

honestly I didn't know of there existence.

googling... the links on ryanvm are dead. I'll try and find them and check them out.

edit:
bad links. looking in the index of the folder I found the July archives. will report back...

edit: won't work as is as I have to change the path. fix coming soon.




edit:
this is an experimental version! please read.
you can use muiz's Vistapacks with it. you can have Vista x64, Vista x86 and XP drivers all together. It will detect your OS and only allow the correct driverpacks to be used. do not rename muiz's driverpacks (Vistax64Drivers_jul.7z, Vistax86Drivers_jul.7z). The month in the name is ignored. It uses the archive names to set the path for dpinst.exe. using with XP x64 there is no OS check as there is no unique standard for archive or path names.
tested in Vista x64 and it updated my chipset drivers!


experimental! using with Vista will cause DPsFnshr to give errors. I need to write my own version of DPsFnshr because of the new file paths.
use with bin files from v0.3.1...

:removed:

I'm off to bed now but will attempt a workaround for the DPsFnshr problem tomorrow.

Updated to v0.3.1

I eliminated un7zip.exe and use 7za.exe directly for extraction. DriverUpdater would wait for un7zip which would wait for 7za. In some cases 7za.eze could freeze up causing everything to become unresponsive and hidden at the same time.
also fixed a potential problem with spaces in the path.

update at first post.

I propose one thing to the developers. If releasing driverpacks for other OS versions in the future. ie Vista, x64 then can you use different folder names then just D for the different OS driverpacks. If you do I can have my tool only scan the proper folder for that OS after detection.
example...
install from D for XP,2000,2003 x86
install from Dx64 for XP, 2003 x64
install from DVx86 for Vista, 2008 x86
install from DVx64 for Vista, 2008 x64
That way it won't try to install the wrong drivers for your OS. it won't install them anyway but it will still take the time to try.

Jaak wrote:

there was some forum group effort behind this, I suppose.
Is this open source?
I this in alpha stage? (the topic title may have to be changed.)

No group. Just coded by me and tested by me.
Not open source yet. I would like to get any possible bugs worked out and add some things and then I will release the source code.
alpha? call it what ya will. It's a work in progress. v0.1 was never released it was just my first test. v0.2 was posted in the link in the first post. v0.3 is here.

Jaak wrote:

I figure our admins want to know this up front.
Is this in autoIT?
will you help us improve it (not jut plug it).

no. it's coded in Delphi. from what I've tested and read autoit does not work in presetup mode. Delphi works!
I would love for feedback to be able to improve it. What do ya want it to do? Anyone on the dev team wanna help me improve it? I am open to suggestions.


It should also work in Windows 2008 but I have no way to test it. It will show "Vista" as your OS as I didn't add a 2008 check in there.

I made it for me because I use both XP x86 and Vista x64. I wanted a driver install tool. It was easy to support both in one tool.

I plan on making my own replacement for DPsFnshr.exe because of the warnings if run in X64 or Vista. I just need to motivate myself a bit. wink


the ultimate solution for a driver installers would be have the tool run devcon to find your hwid's and then send a request to a server to get updated drivers based on that list. it downloads them and installs them with dpinst. That way you don't need any driverpacks, just the DriverUpdater tool itself.

Ever wished you could skip one or more of the packs during the install (or repair) on a particular machine?
I did!

This project is inspired by the concept by Kal.

This tool serves two functions. It can be integrated into your install disc (M2) or it can be launched on it's own. If using it in your install disc (M2) then you must use the provided presetup.cmd file and replace the one in your i386 folder. The new presetup.cmd is in the bin folder.

As a stand alone tool I have made it compatible with x86 and x64 systems being 2000, XP, 2003, Vista or 2008.
Tested in x86 XP and x64 Vista only.

To use it in your install disc just add the tools to the OEM folder of your disc.
Replace presetup.cmd with the provided one.
Add your driverpacks to the OEM folder.

Some existing files that are no longer needed are:
dpinst.exe: contained in the x86.7z and x64.7z archives as it's different for both.
dpinst.xml: this file is created during install as it is a bit different for x86 and x64.
7-zip32.dll: not needed.
DPsFnshr.ini: This file is contained in the x86 and x64 archives. KTD is set to false. I plan on having the option to choose during install.
DPsFnshr.7z: not needed as it's called x86.7z now.


To use as a stand alone driver installer just put your driverpacks in the same folder as the DriverUpdater.exe tool and double click it. This method is x64 or x86 compatible. Tested in XP x86 and Vista x64!
In Vista I only tested it with UAC disabled. May not work if it is enabled.
Note: running it in Vista or x64, DpsFnshr will warn as being unsupported. It still does it's job despite the warning.

XP Driverpacks can be named as downloaded from this site or as base renames them. use for XP, 2000, 2003 x86 only systems
XP x64 driverpacks must be named starting 'x64DP' and the root folder must be named the same. use for XP, 2003 x64 systems
Vista driverpacks: the root folder must be Vistax64Drivers or Vistax86Drivers. The names must begin the same eg: Vistax64Drivers_lan.7z


When started, it will only allow driverpacks intended for your system to be installed.

Screenshot running in Vista x64...
http://img132.imageshack.us/img132/7795/capturesq4.th.jpg

The original feature request for this type of tool is here...
http://forum.driverpacks.net/viewtopic. … 75&p=1



get DriverUpdater v0.3.6 here...
see post reply #47


please provide feedback. good or bad.
any improvement ideas?

Thanks.

==============
Edit by moderators:

just a minor update v0.3.6...

extraction is done by un7zip.exe now.


Windows 7 is supported although untested really.

view readme.txt in file.

http://www.mediafire.com/?mmvgdtjam05


this project is now abandoned due to lack of interest by me and the community. This will be the last update.


v0.3.6 Delphi source code
http://www.mediafire.com/?mbgoj3wmtzl

update
Driver Updater v0.2.3

fixes a bug with read-only attributes if run from CD.


http://www.mediafire.com/?vbgnljezewh


edit:
I created a new topic and updated to v0.3.0 here...
http://forum.driverpacks.net/viewtopic. … 652#p22652

I do agree with what you are saying Kal, however, for the end user there is no real difference between me submitting a modified version of your code or my own. They look closely enough to each other to be easy to figure out.
I think if I were to modify yours or you implement my changes then it should be renamed. DPsXtrct.exe is fine for presetup mode extraction only but for installing drivers a descriptive app name to double click is much better. IMHO

After review of your source I will make my decision on whether to abandon mine or not. I will post my source code soon as well.

Helmi, I think you should delete the first 25 post in this thread and start with Kal's first submission.

honestly I think two different apps doing similar things ain't that bad. Why make someone use Firefox when they like Opera instead or vise-versa.
Viva la difference!

also I updated mine to v0.2.2 above.

I love x64!!!!!!!! XP and Vista.

Driver Updater v0.2.0 (first public release)

This looks similar to the one released by Kal. I created it mainly to see if I could. I think it works great.
If double clicked it has the function of extracting and then installing the drivers. It uses dpinst.exe, a Microsoft program for the install.
If launched from presetup.cmd then it will extract only. It will timeout after 60 seconds (presetup only) if no interaction and extract all drivers.
When launching from presetup the parameter "presetup" needs to be passed to tell it not to install the drivers but to extract them only. Windows install will install the drivers. I included presetup.cmd to replace the one in your i386 folder. Please use it to eliminate error.
The other files needed are included mainly to show there intended location. Note dpinst.xml is not needed as it is created by DriverUpdater.exe.
No .ini file is needed as the OEM folder is scanned for existing driverpacks. They can be named using the long or short names.

After DPsFnshr.exe runs it is deleted and the reg entry deleted as well.


http://img167.imageshack.us/img167/4593/capturega5.th.jpg


http://www.mediafire.com/?tcldg3l3ulv


edit updated to v0.2.1. fixed minor bug that if no driverpacks the install button is grayed out.
edit updated to v0.2.2 changed- you can install some driverpacks and then install more without having to reopen the app. dialog if no driverpacks. also a few tweaks with checkboxes.

Kal wrote:

Hi jaws1975,

I will publish the code of my DriverPacks extractor. I just wait to be back from vacation (27th July) and cleanup the code. Maybe you should wait a bit and modify the code I will publish, avoiding to get 2 differents versions doing the same thing.

Kal

I agree.

I really just want to see if I could do it. I figured out the timer thing "on paper". I can't test it yet though.

If you launch mine from presetup with the parameter "presetup" it works like yours. Extraction only.
If launched via double click it will extract and then launch dpinst.exe to install the drivers.

All works perfect but the onMouseOver/Move timer.

I'm building mine more as a learning experience then anything else.

Nice work. Works great.

my suggestion for the problem if no drivers are extracted in presetup is...
If nothing extracted then DevPath can't be lauched either.

check if the folder "D" exist. if so run DevPath. if not then don't run it...
IF EXIST %SystemDrive%\D\ %CDDRIVE%\OEM\bin\DevPath.exe %SystemDrive%\D

If folder "D" does not exist the just create the folder...
IF not EXIST %SystemDrive%\D\ md %SystemDrive%\D

That way you still run DPsFnshr without error and you don't need extra batch files or need to modify winnt.sif.

presetup.cmd
http://www.mediafire.com/?wv92kg9czoj



:EDIT:
I've managed to code my own version of a driver Selector. The only thing I haven't figured out yet is the auto install if no user interaction part, which important.
I will post it when finished.

22

(14 replies, posted in Software)

updated link on first page. minor update.


OverFlow wrote:

...Autoit.

what happened when you tried ?

I tried with message boxes and nothing was shown or happened. There is also discussion about autoit not working on the first page of the thread I linked to above. Old topic though...
http://forum.driverpacks.net/viewtopic. … 82&p=1

It may just be a problem with visual autoit code. I never tried just a hidden console app.

23

(14 replies, posted in Software)

OverFlow wrote:

lol wink

it is a pretty simple program... one of these days i will replace it so we have the source.
no delphi wont help as base is coded in autoit and so must the new setup be as well.

Thanks for your contributions and taking the time to discuss and share with us.

Welcome back sir!

In my testing autoit did not work in presetup stage but if you can make it work, then so be it.

24

(14 replies, posted in Software)

Thanks for checking it out. Let me know how it goes for you.


I also got bored and created my own fake setup.exe in Delphi. It works without any hiccups. (only tested in VMware so far)
It does the same as the one you use. It renames the files, launches presetup.cmd and then the real setup.
I read in one of the posts somewhere that you guys don't have the source for the original. Need a replacement? wink

25

(14 replies, posted in Software)

Well it's been a long time since I posted here.
A long time ago I created the first working progress bar during presetup.
http://forum.driverpacks.net/viewtopic. … 82&p=2
It was misunderstood and ignored. sad

I've never been happy with the current extraction method using un7zip.exe.
It's very slow. It freezes at times during extraction.

I created a replacement for it. It will extract the drivers faster then the current un7zip.exe.
The main difference is it shows a command window showing the extraction process instead of a progress bar.
Some may not like it but you have the choice of speed or beauty?

I named my file un7zip.exe to allow you to just replace the existing one without any other changes.
It works with the driver selector created by Kal as well.
The file 7-zip32.dll has been replaced with 7za.exe. 7-zip32.dll is not needed. 7za.exe is included.


I coded it in Delphi. The source is available to any moderator that wants it.
The path %systemdrive%\D is hard coded and does not need to be passed to it.
You are free to use it as you like.
You could create an option in the base for speed or beauty during extraction.

get it here...
http://www.mediafire.com/?9hbujdlijd9


also... in testing my old method of using sfx extractors it was about twice as fast as un7zip.exe is.