Jump to content

Create a 'new' Windows installer?


Recommended Posts

I've been watching allthe efforts to learn and understand the

9x series of Windows (actually my favorite version, minus a

few features I really enjoy from XP such as cleartype) and I

was wonder what is to stop someone from creating our own

setup.exe for Windows 9x? Instead of using Win3.x to install

we could build an installer based on the work being done to

build a 5mb windows. Then it would be just a matter of copying

files to their proper locations and telling the registry where to

find everything.

I'm curious if this would be a better way to make a Windows 9x

system that is fully updated at install time? I've tried using the

various updates and MS's cab tool to create updated cabs for

install and those seemed to work right up to the point where

the system screamed for IE ...I actually managed to work my

way around that issue by changing the shell to taskman.exe

and installing IE6SP1 and the continuing the install after reboot

by switching shells again.

When I tried to do something simuliar with Gape's service pack

and IE or maybe it was some WinME files? Setup complained

about invailid beta needing an EULA or something. It occurs

to me that we'd get around a lot of restrictions if someone were

able to build a custom Win9x installer that were capable of using

the best parts to build the system.

Any ideas here anyone or have I just been awake too long?

Link to comment
Share on other sites


I think you've been awake too long, here's my take on it all. Please take note there's no sugar coating in this post, this is rough love.

Gape's work of getting all the hard to find updates for Win98 together in 1 big SP is awesome, we have a way to make 98 a more stable & secure platform than it ever was. I hope he continues his work until it's physically impossible to apply any more 1st party updates to 98.

Also I appluad everybody else that does 3rd party work to fix major faults in 98 such as support for large HDs, USB support, etc etc.

What you are doing is re-inventing the wheel by bastardizing the Win98 install and repackaging it. IMHO, this is out of the scope of this forum. While I admit a Win98SE install with integrated SP2.x would be nice, I think re-inventing the 98 install is just going too far.

But hey, if you can pull it off, good luck, I think this is 100x more complicated than you realize.

Link to comment
Share on other sites

Essentially, you can integrate Gape's SP2 into a Win98SE cd. Just dump the CAB file "SP2.CAB" into the Win98 directory, then go ahead and install Win98SE. It'll automatically find the SP2 file, and copy all files in there to the install.... it's documented in v2.0.2's post.

If you wanted to re-write the setup.exe file, you wouldn't be doing much... setup.exe is basically just a dummy launcher - it detects when DOS is in use, and runs a separate DOS installer binary (DOSSETUP.BIN)... the .BIN files are the installers for Windows 9x. Check them out, if you wish, but there's never going to be a new installer for a 7-year old Operating System, of which, we do not have the source to. Don't give too many people false hopes. T'is a dream. (sorry).

Link to comment
Share on other sites

From what I understood of that post, it meant that you had to copy the files in the sp2.cab into the WIN98 dir, not the cab file. I'm not really sure if the cab file would be the same or not, but it might not copy those files.

the_guy

Link to comment
Share on other sites

I think you've been awake too long, here's my take on it all.  Please take note there's no sugar coating in this post, this is rough love.

Gape's work of getting all the hard to find updates for Win98 together in 1 big SP is awesome, we have a way to make 98 a more stable & secure platform than it ever was.  I hope he continues his work until it's physically impossible to apply any more 1st party updates to 98.

Also I appluad everybody else that does 3rd party work to fix major faults in 98 such as support for large HDs, USB support, etc etc.

What you are doing is re-inventing the wheel by bastardizing the Win98 install and repackaging it.  IMHO, this is out of the scope of this forum.  While I admit a Win98SE install with integrated SP2.x would be nice, I think re-inventing the 98 install is just going too far.

But hey, if you can pull it off, good luck, I think this is 100x more complicated than you realize.

Thanks for the tough love.

I want to clear up one misconception though. I wouldn't

be the one to try and do this. I'm simply not a programmer.

I wish I were, it'd allow me to make some serious cash with

some of the ideas I have floating around in my head.

About Gape's service pack, I'm not actually focussing in so much

on what Gape does (much as I am greatful beyond words for his

work) I'm thinking more of on the level of stuff that Tihiy does

or the kinds of things that are done by MGX's 98SE2ME app. I

actually based things on MGX's list when I tried my earlier experiment

in slipstreaming ME files in to 98SE. This was before the 982ME

app was released and we all had to hack into things ourselves.

What I'm focusing in on is doing things like adding and upgrading

the actual OS. Things that 98lite did on the inf level can only go

so far before they run into limitations in microsoft's setup.exe.

Things like adding IE6SP1 at install time simply can't happen because

setup.exe says so. You can't change around system file locations

until after the system is installed because certain things are hard

coded simular to the way Windows 2000 Service Packs could only

be slipstreamed form a certian locations.

I'd like to be able to install IE6 at install...ditto on Direct X. I'd

like to do a lot of things that are required to improve system

behavior semi-automatically.

Link to comment
Share on other sites

Having spent far too much time exploring the Win9x setup process, I would like to clarify a number of misconceptions about setup.exe. Jimmsta is mostly correct when he says “setup.exe is basically just a dummy launcher”. However even the *.bin files don’t really do much. They mostly just provide the pretty GUI front end. The real work is done by a handful of key DLL’s of which setupx.dll performs the bulk of the work.

Setupx.dll is mostly just a text file parsing engine. Its job is simply to open, read and process inf files. Contrary to what you are thinking, it is the content of the setup files (infs) that determines what gets installed, not setup.exe or the related files. If you change the infs, you can radically change what gets installed. Overall there is really no point in rewriting setup.exe (and/or its related files) since a rewritten version won’t do anything that couldn’t be done much easier with a few custom inf files.

>Things like adding IE6SP1 at install time simply can't happen because setup.exe says so.

Unless MS recently changed things, most of the IE packages use an inf driven setup engine that for the most part is modeled on setupx.dll. If you download the IE setup files (mostly various cab files) you will find that they contain a number of inf files. With some relatively minor modifications, I am not aware of any reason why you could not slipstream IE6SP1 into the Win9x setup process. After all this is exactly what MS did with IE4 in Win98, IE5 in Win98SE and IE5.5 in WinMe. I haven’t done it simply because I am not a big fan of IE.

>I'd like to be able to install IE6 at install

Then learn all you can about how the win9x setup process works, download the IE setup files, fire up notepad, and start editing.

>ditto on Direct X

Different program, same process. I can’t think of a program (assuming that it was designed to run under Win9x) that couldn’t be made a part of the normal setup process. It is simply a matter of figuring out what files need to be copied and what registry entries need to be made, and then writing an inf file that will do that. All most of the various setup programs (Installshield, etc.) do is put a pretty face on the job of copying files and making registry entries. I’m not saying this is a 5 minute process. However the bulk of the work involves mostly testing, testing and more testing of your custom inf file until you get it right.

My only advice is that you may want to consider starting with a slightly smaller project and working your way up to IE6SP1. IE is a rather tangled, complicated mess (this is part of the reason I don’t like it). If you don’t get everything just right, things just stop working. Even changing something minor often breaks some part of IE that you would think should not even be related. This is not a problem with the Win9x setup files, it is a problem with the inherent design of IE.

>Things that 98lite did on the inf level can only go so far before they run into limitations in microsoft's setup.exe.

98lite and my package (pcss) only scratch the surface of what could be done simply with inf files. I have a number of ideas for creating what could be a whole new version of Win9x. I simply don’t have the time to execute them.

Link to comment
Share on other sites

Having spent far too much time exploring the Win9x setup process, I would like to clarify a number of misconceptions about setup.exe. Jimmsta is mostly correct when he says “setup.exe is basically just a dummy launcher”. However even the *.bin files don’t really do much. They mostly just provide the pretty GUI front end. The real work is done by a handful of key DLL’s of which setupx.dll performs the bulk of the work.

Setupx.dll is mostly just a text file parsing engine. Its job is simply to open, read and process inf files. Contrary to what you are thinking, it is the content of the setup files (infs) that determines what gets installed, not setup.exe or the related files. If you change the infs, you can radically change what gets installed. Overall there is really no point in rewriting setup.exe (and/or its related files) since a rewritten version won’t do anything that couldn’t be done much easier with a few custom inf files.

Okay thanks for clarifying my misconceptions there on Setup.exe.

I had read that all setup.exe does is launch a mini win3.x enviroment

to copy files and provide a temporary gui for installation. I see that

what I read is only half the situation. From my misconceptions I had

the thought that the way to go would be to bootstrap a mini W9x

enviroment and go from there, that no being the case then .infs

are where I want to go. Hmmm....

>Things like adding IE6SP1 at install time simply can't happen because setup.exe says so.

Unless MS recently changed things, most of the IE packages use an inf driven setup engine that for the most part is modeled on setupx.dll. If you download the IE setup files (mostly various cab files) you will find that they contain a number of inf files. With some relatively minor modifications, I am not aware of any reason why you could not slipstream IE6SP1 into the Win9x setup process. After all this is exactly what MS did with IE4 in Win98, IE5 in Win98SE and IE5.5 in WinMe. I haven’t done it simply because I am not a big fan of IE.

>I'd like to be able to install IE6 at install

Then learn all you can about how the win9x setup process works, download the IE setup files, fire up notepad, and start editing.

Alright, then but please understand I'm not the fan of IE you seem

to think I am...I only want IE for its updated files and then to make

the rest of it go away as quickly as possible. I was hoping that once

IE was installed (or at least the essensial files needed for updates) it

could be modified ala Fred Vork's Win2000 RegInstall tips in step 19

(I think it was) of his project. I want\need the GUI shell enhancements

of IE but don't want to pay for them by accpeting the rest of it. If

there were a way to just add the files needed and reshack the ####

out of them so they don't make all those directories in /Windows I'd

be the happiest man on Earth.

>ditto on Direct X

Different program, same process. I can’t think of a program (assuming that it was designed to run under Win9x) that couldn’t be made a part of the normal setup process. It is simply a matter of figuring out what files need to be copied and what registry entries need to be made, and then writing an inf file that will do that. All most of the various setup programs (Installshield, etc.) do is put a pretty face on the job of copying files and making registry entries. I’m not saying this is a 5 minute process. However the bulk of the work involves mostly testing, testing and more testing of your custom inf file until you get it right.

Well that's basically where I'm going...I'd like to do 'strange' things

with the system though, like provide for installing the '/program files'

folder at a different directory ala the way setup.exe currently asks

for the /Windows location. Also I'd like to make the default install

install certain files in a different location, either at /Windows/Command

or if I can do it without breaking too much I'd like to make the setup

put everything in '/Windows/system' ... and of course not install certain

items at all! Like the whole 'Welcome to Windows' or the old RealAudio

files..not to mention the WebTV stuff which seems to be inhereintly

broken...unless someone knows of a way to fix it up ala Windows MCE?

98lite and my package (pcss) only scratch the surface of what could be done simply with inf files.  I have a number of ideas for creating what could be a whole new version of Win9x.  I simply don’t have the time to execute them.

Ahh...well THIS is it exactly. I'd like to see about creating a whole new

version of Windows 9x. I've tried before (I mentioned my first foolhardy

attempt in my first post) some time ago and got some (limited) good

results as long as I installed IE 6SP1 before allowing setup to continue.

I'd like to try again with a little more enlightenment at my side. I'd even

like to see what could be done about creating some kind of front end to

this ala 98Lite (which to all extents and purposes seems dead) and make

it freely available to the world. The trick (IMHO) is to get something that

can be run on a proposed 98Setup directory and make all the changes

from there with the user typing 'y' ala MGX's 98SE2ME which does

just that. The difference would be that once finished the program\bat

would exit out leaving a completely patched directory with everything

ready to be used. You could burn the directory to disk with some extra

tools (although that shouldn't be necessary) and when you installed the

whole thing would run from start to finished and exit out with an updated

(in all senses of the word) desktop. Drivers ect allready installed.

Something that would be soporific's work on steriods....

Something that would use Tihiy's 98Revolutions Pack from the get go.

Something...I think you get the picture...

Link to comment
Share on other sites

>I want\need the GUI shell enhancements of IE but don't want to pay for them by accpeting the rest of it.

Keep in mind that, as of Win98, iexplorer.exe and explorer.exe are two sides of the same coin. It is difficult to change one without breaking the other since they both use the same DLL’s. However if all you want is the shell enhancements and don’t plan to browse the web with IE there are significant chunks that can be removed.

I would suggest that you take a look at iefiles.inf in PCSS for some background on the parts of IE that you will probably need. Even though I used the Win95 shell in PCSS, it isn’t too complicated to modify it to use the Win98/IE shell instead. I left several notes about how to do this. [see this post for PCSS http://www.msfn.org/board/index.php?showtopic=53927. BTW, PCSS.exe is just a big DOS based zip file. If you want to see what is going on (without reinstalling Windows) simply run it in a temporary directory. It will just extract a bunch of files and you can then read through them to see what is happening]

Once you get the Win98 shell running you can then go through IE6SP1 and pull out the updated files that you would need and begin experimenting. In most cases you probably won’t even have to modify iefiles.inf. Just copy the updated DLL’s into the windows setup directory and install as normal. Setup will grab the updated DLL’s first rather then the ones in the cabs. However I am sure you will run into at least a few problems. A few of the updated files will probably depend on a few new DLL’s, require some new registry entries, etc. But if you take your time and proceed carefully I don’t see any problem making this work.

<SOAPBOX>That said I still consider the integration of IE into the shell a bad design decision on MS’s part. No matter how many “critical updates” MS releases it will always be an inherent security problem. What parts of the shell enhancements do you consider important? Are you sure that there aren’t other solutions to these problems? I’ve been able to solve most of my own problems with the Win95 shell. However I do realize it has a few warts that could be a major problem for someone else.</SOAPBOX>

>it could be modified ala Fred Vork's Win2000 RegInstall tips

I’m not familiar with this. I think you are referring to modifying the inf files embedded in the various IE DLL’s but I am not sure. Please provide a link to more background.

>like provide for installing the '/program files' folder at a different directory

I think this is determined by the following registry entry:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir

Check the winbase.reg section in subase.inf in PCSS and modify as you see fit. You will also need to modify some DestinationDirs sections and change a few registry entries in other infs to point to your new path. Keep in mind that some lazy programmers may hard code the normal path into their third-party programs. You will have to experiment to see what works.

>I'd like to make the default install certain files in a different location

A few changes to the DestinationDirs section in the various relevant infs should do this. Keep in mind though that Win9x by default searches only a few key directories if it can’t find a file. Therefore if you move a DLL out of the Windows\system directory, for example, you will have to add the new path into autoexec.bat so Windows will find it. The exception to this is COM/OLE based DLL’s that are able to self-register (Most of IE, MediaPlayer and parts of DirectX falls into this catagory).

>or if I can do it without breaking too much I'd like to make the setup put everything in '/Windows/system

I’m of the reverse mindset here. I hate it when everything gets dumped in one directory. It makes it hard to keep track of what is going on. However in most cases I don’t see this as being a problem if you want to do it.

>I'd even like to see what could be done about creating some kind of front end to this ala 98Lite

If you are looking to create a “new” version of Win9x there are a couple of different ways to approach this. The first (mainly bottom up) approach is to modify the infs that come with a stock version of Windows to install the various components that you want and then just use the normal Windows setup routine (setup.exe) to install your modified version of Windows. This is what I have done with PCSS.

A second (mainly top down) approach would be to create a package that would install over an existing Win9x installation. This is the approach used by the unofficial service pack. This is easier for the end user (since they don’t have to reinstall) but limits your flexibility since you have to be very careful not to trash someone’s system. There are multiple install programs out there to help you do this.

I wanted maximum control and flexibility so I opted for the first approach. However the average user typically sets up their hard drive as one big partition which makes reinstalling Windows a difficult and risky process. As a result this approach is likely to be considerably less popular.

>The trick (IMHO) is to get something that can be run on a proposed 98Setup directory and make all the changes from there with the user typing 'y'

This is more or less how PCSS.exe works.

>The difference would be that once finished the program\bat would exit out leaving a completely patched directory with everything ready to be used.

Ditto

>The whole thing would run from start to finished and exit out with an updated (in all senses of the word) desktop.

This is the part that my package doesn’t do. In my case it wasn’t a big priority. However from what you have described, I think my package would be a good starting point/learning tool to help you get there.

Link to comment
Share on other sites

>I want\need the GUI shell enhancements of IE but don't want to pay for them by accpeting the rest of it.

Keep in mind that, as of  Win98, iexplorer.exe and explorer.exe are two sides of the same coin.  It is difficult to change one without breaking the other since they both use the same DLL’s.  However if all you want is the shell enhancements and don’t plan to browse the web with IE there are significant chunks that can be removed.

Well like I said Fred Vorck (Can't believe I spelled his name wrong!

Has a few ideas as to where exactly the IE parts of the shell in 2000

might be and how to murder IE without sacrificing the shell updates.

<SOAPBOX>That said I still consider the integration of IE into the shell a bad design decision on MS’s part.  No matter how many “critical updates” MS releases it will always be an inherent security problem.  What parts of the shell enhancements do you consider important?  Are you sure that there aren’t other solutions to these problems?  I’ve been able to solve most of my own problems with the Win95 shell.  However I do realize it has a few warts that could be a major problem for someone else.</SOAPBOX>

>it could be modified ala Fred Vork's Win2000 RegInstall tips

I’m not familiar with this.  I think you are referring to modifying the inf files embedded in the various IE DLL’s but I am not sure.  Please provide a link to more background.

Here's the links you asked for:

[ http://www.vorck.com/2ksp4.html ] Step 20

[ http://www.vorck.com/2ksp5.html ] Step 25

>like provide for installing the '/program files' folder at a different directory

I think this is determined by the following registry entry:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir

Check the winbase.reg section in subase.inf in PCSS and modify as you see fit.  You will also need to modify some DestinationDirs sections and change a few registry entries in other infs to point to your new path. Keep in mind that some lazy programmers may hard code the normal path into their third-party programs.  You will have to experiment to see what works.

>I'd like to make the default install certain files in a different location

A few changes to the DestinationDirs section in the various relevant infs should do this.  Keep in mind though that Win9x by default searches only a few key directories if it can’t find a file.  Therefore if you move a DLL out of the Windows\system directory, for example, you will have to add the new path into autoexec.bat so Windows will find it.  The exception to this is COM/OLE based DLL’s that are able to self-register (Most of IE, MediaPlayer and parts of DirectX falls into this catagory).

>or if I can do it without breaking too much I'd like to make the setup put everything in '/Windows/system

I’m of the reverse mindset here.  I hate it when everything gets dumped in one directory.  It makes it hard to keep track of what is going on.  However in most cases I don’t see this as being a problem if you want to do it.

Well I was actually talking about *.exes not *.dlls

>I'd even like to see what could be done about creating some kind of front end to this ala 98Lite

If you are looking to create a “new” version of Win9x there are a couple of different ways to approach this.  The first (mainly bottom up) approach is to modify the infs that come with a stock version of Windows to install the various components that you want and then just use the normal Windows setup routine (setup.exe) to install your modified version of Windows.  This is what I have done with PCSS.

A second (mainly top down) approach would be to create a package that would install over an existing Win9x installation.  This is the approach used by the unofficial service pack.  This is easier for the end user (since they don’t have to reinstall) but limits your flexibility since you have to be very careful not to trash someone’s system.  There are multiple install programs out there to help you do this.

I wanted maximum control and flexibility so I opted for the first approach.  However the average user typically sets up their hard drive as one big partition which makes reinstalling Windows a difficult and risky process.  As a result this approach is likely to be considerably less popular.

>The trick (IMHO) is to get something that can be run on a proposed 98Setup directory and make all the changes from there with the user typing 'y'

This is more or less how PCSS.exe works.

>The difference would be that once finished the program\bat would exit out leaving a completely patched directory with everything ready to be used.

Ditto

>The whole thing would run from start to finished and exit out with an updated (in all senses of the word) desktop.

This is the part that my package doesn’t do.  In my case it wasn’t a big priority.  However from what you have described, I think my package would be a good starting point/learning tool to help you get there.

I'd like to see a bottom up approach definately!

Thansk for replying.

Link to comment
Share on other sites

Well like I said Fred Vorck (Can't believe I spelled his name wrong!

Has a few ideas as to where exactly the IE parts of the shell in 2000

might be and how to murder IE without sacrificing the shell updates.

Doesn't Ieradicator already do what you want here ?
IEradicator2001 leaves the "enhanced" shell features in place and just takes out the browser.

http://www.litepc.com/ieradicator.html

Link to comment
Share on other sites

Well like I said Fred Vorck (Can't believe I spelled his name wrong!

Has a few ideas as to where exactly the IE parts of the shell in 2000

might be and how to murder IE without sacrificing the shell updates.

Doesn't Ieradicator already do what you want here ?

IEradicator2001 leaves the "enhanced" shell features in place and just takes out the browser.

http://www.litepc.com/ieradicator.html

Some of what I want, yes...but not at install time and note from the

top of the page you yourself just linked:

Not for use with Windows 2000sr2 or Windows XP

Whereas Fred Vorck's method WILL work with Win2000 SP2-5u*

and its worked for me in Windows XPSP2 (minus a few breakage

points in the 'enhanced' start menu). Also a big sticking point with

IERadicator (IIRC, its been a few years since I last used it) Shane

Brooks doesn't eliminate the ability of Explorer to convert to IE if

a url is typed directly into the addressbar. The method referenced

by Vorck is a direct modification to the DLLs themselves via Reshacker

and 9x has the big advantage of using this method over 2000 and

XP by virtute of its age: Its no longer being updated as frequently

so files can be changed with a bit more impunity.

Which is one of the bigger reasons why I favor a top up approach--

Starting fresh is simply less headache than trying to cajole the OS

into behaving afterwards...surely anyone who has used ROMII knows

that...especially as compared to the now defunct 98Lite!

-iWindoze

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...