Jump to content

Welcome to MSFN Forum
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account


Photo

Silent .NET Maker (latest update: 20080603)

- - - - -

  • Please log in to reply
375 replies to this topic

#1
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts

Silent .NET Maker

This batch utility allows you to create your own silent switchless installers for .NET 1.1, .NET 2.0 SP1, .NET 3.0 SP1 and .NET 3.5. They are compatible with Windows 2000 (except .NET 3.x), Windows XP x86 and Windows Server 2003 x86 (except .NET 1.1). The installers for .NET 1.1 and 2.0 SP1 can be installed at T-13.

Quick download: SNM.zip
Changelog: see bottom


Supported:
- .NET 1.1 package
- any NDP1.1*.exe, Sxxxxxx.msp and Mxxxxxx.msp hotfix for .NET 1.1
- language pack for .NET 1.1
- .NET 2.0 SP1 package (NetFx20SP1_x86.exe)
- language pack for .NET 2.0 SP1 (NetFx20SP1_x86XX.exe)
- language pack for .NET 3.0 SP1 (NetFx30SP1_x86XX.exe -- not recommended)
- full .NET 3.5 package (dotnetfx35.exe -- contains .NET 2.0 SP1, .NET 3.0 SP1 and .NET 3.5)
- language pack for .NET 3.5 (dotnetfx35langpack_x86XX.exe -- only .NET 2.0 SP1 and .NET 3.0 SP1 portions are supported)

Hotfixes and language packs require the main .NET package they apply to. This script is not intended to create installers for hotfixes or language packs only.

Processing a specific version of .NET requires it to be already installed on the system on which you run this script (.NET 1.1 needs to be installed if you want to process .NET 1.1 and .NET 2.0 SP1 needs to be installed if you want to process .NET 2.0 SP1). For .NET 3.0 SP1, it is enough to have .NET 2.0 SP1 installed. For .NET 3.5, you need at least .NET 3.0 SP1 installed which in turn requires .NET 2.0 SP1. This is not a limitation of the script, but of the fact that an administrative installation can't be processed if the packages aren't installed "normally" first.


MSXML6 in .NET 3.0 SP1...
Currently, .NET 3.0 SP1 contains the latest version of MSXML6 SP1 so it isn't needed to include it separately in the root of the SNM working folder anymore. Please remove it if it exists because SNM will assume it's newer than the MSXML6 package in .NET 3.0 SP1.
When DNF30.exe or DNF35.exe is installed, MSXML6 binaries are only copied if they don't yet exist in system32. This decision was made because Windows XP SP3 contains MSXML6 SP2.


.NET 3.0 SP1 language pack...
While the standalone .NET 3.0 SP1 language pack (NetFx30SP1_x86XX.exe) is supported, it is not recommended to use it because it doesn't contain the localized XML Paper Specification update. It's better to use the language pack for .NET 3.5 which contains the complete .NET 3.0 SP1 language pack. In this case, you can also ignore the standalone language pack for .NET 2.0 SP1 (NetFx20SP1_x86XX.exe) if applicable because it's also part of the .NET 3.5 language pack.


.NET 3.5 language pack...
This pack is fully supported with the exception of the language pack for .NET 3.5 itself. I'm still struggling with that bit, so only the .NET 2.0 SP1 and .NET 3.0 SP1 language packs are processed.


Hotfixes for .NET 2.0 SP1 and .NET 3.0 SP1...
These aren't really supported because I don't know of any, so I can't know how they will be named or how they should be processed. Silent .NET Maker currently assumes the names of the updates for .NET 2.0 SP1 start with "NetFX20" and those for .NET 3.0 SP1 with "NetFX30" but that may need to be changed.


.NET 3.x notes...
.NET 3.0 SP1 can't be installed at T-13 (SVCPACK) because it breaks the WebClient service; it must be installed at first GUI logon.
.NET 3.0 SP1 won't install if you install .NET 1.1 in the same go unless you install .NET 1.1 AFTERWARDS.
By default, Silent .NET Maker will split the individual frameworks from the .NET 3.5 package into DNF20.exe, DNF30.exe and DNF35.exe. This script is primarily intended to create installers for an unattended Windows installation, and since .NET 3.0 SP1 should be installed at first GUI logon and .NET 2.0 SP1 doesn't have to be necessarily, it is better to keep them separated to give you more leeway as to what should be installed when.
If you want to change the default behavior, open _SNM.ini (the answer file) in a basic text editor and change the default settings to:
PROCESS_DNF35_DNF2=YES if you want .NET 2.0 SP1 included in the DNF35.exe package
PROCESS_DNF35_DNF3=YES if you want .NET 3.0 SP1 included in the DNF35.exe package


Answer file...
The answer file _SNM.ini allows you to modify some things to your needs. For example, to merge .NET 1.1 and .NET 2.0 SP1 packages, open the answer file in a basic text editor and set MERGE_FRAMEWORKS at the bottom to 12 (MERGE_FRAMEWORKS=12 without any spaces). The answer file included in the script package shows the defaults used by the script, so you only need it if you want to modify something.


Merging packages...
To merge .NET 1.1 with .NET 2.0 SP1, set MERGE_FRAMEWORKS in the answer file to 12.
To make a single package containing all processed .NET Frameworks, set MERGE_FRAMEWORKS to FULL. In order to allow .NET 3.0 SP1 installation to complete, .NET 1.1 is installed last. If you don't like the sound of this... don't do it.
MERGE_FRAMEWORKS=12
MERGE_FRAMEWORKS=FULL


Setting compression ratio...
If the temporary file named TEMP.7z doesn't change size for several minutes, it is more than likely your system cannot handle the default compression ratio used by the script. At the bottom of the answer file you can find a variable called COMPRESSION_RATIO; set it to MED (medium) or LOW if you are experiencing problems. Try MED first.
COMPRESSION_RATIO=MED
COMPRESSION_RATIO=LOW


Extra features of the outputted .NET 1.1 installer:
- if a language pack is integrated, it will be reflected in the name of the outputted installer (eg, DNF11_es.exe)
- if any hotfix for .NET 1.1 SP1 is slipstreamed, its useless entry is removed from Add/Remove Programs
- if the language pack is integrated, the English .NET 1.1 configuration/wizards links are removed from the Administrative Tools folder


Extra features of the outputted .NET 2.0 SP1 installer:
- if a language pack is integrated, it will be reflected in the name of the outputted installer (eg, DNF20_fr.exe)
- if the system on which it's installed is not Windows 2000 and if Windows setup is in progress, the registry is modified to allow .NET 2.0 SP1 to be installed from SVCPACK
- if any hotfix for .NET 2.0 SP1 is slipstreamed, its useless entry is removed from Add/Remove Programs


Extra features of the outputted .NET 3.0 SP1 installer:
- if a language pack is integrated, it will be reflected in the name of the outputted installer (eg, DNF30_fr.exe)
- if the system on which it's installed is not Windows 2000 and if Windows setup is in progress, the registry is modified to allow .NET 2.0 SP1 to be installed from SVCPACK
- the .NET 3.0 SP1 portions are not processed if the system is Windows 2000
- if any hotfix for .NET 3.0 SP1 is slipstreamed, its useless entry is removed from Add/Remove Programs


Features specific to the script only:
- the installers are created in a subfolder of which the name is "OUT" followed by a number starting with "1"
- if the script is run again, it will create the installers in a new OUT* folder as to not overwrite the previous ones
- empty OUT* folders are deleted
- any remaining temporary folders and files from a previous failed run are removed first


Instructions:
1) Download the script package and extract it into a folder of your choice. The path can contain spaces but no special characters such as exclamation marks.
2) Read readme.txt if it's your first time
3) Download the .NET installer(s) you wish to have processed into the folder you created:
- .NET 1.1
- NDP1.1sp1-KB867460-X86.exe
- NDP1.1sp1-KB928366-X86.exe
- language pack for .NET 1.1 in your language
- .NET 2.0 SP1 (do not rename; not needed if including dotnetfx35.exe)
- language pack for .NET 2.0 SP1 in your language (do not rename; not needed if including both dotnetfx35.exe and the language pack for dotnetfx35.exe)
- .NET 3.5 (full redist called dotnetfx35.exe with a size of 197MB)
- language pack for .NET 3.5 in your language (do not rename)
4) Optionally, edit _SNM.ini (the answer file) to your needs
5) Run the script by double-clicking SNM.cmd from within a Windows account with administrative privileges


Tested and found working on:
- Windows 2000 SP4 (English)
- Windows XP SP2 (English and Dutch)


Thanks to Oleg_Sch for the hidcon.exe and msistub.exe utilities.
hidcon.exe: totally hide the DOS box that would appear when the batch file in a silent installer is run
msistub.exe: interface with MSIEXEC.EXE


Also thanks to Acheron for letting me know how to create a usable administrative install of .NET 2.0 SP1.


Changelog:
20080603
- allowed creating merged .NET 1.1 and .NET 2.0 SP1 installer with dotnetfx.exe and dotnetfx35.exe as input files
- names of .NET 2.0 SP1 hotfixes are expected to start with "NetFX20" instead of "NDP20"
- attempting to get the language of the language pack for .NET 1.1 for the name of the standalone .NET 1.1 output file (eg, DNF11_es.exe)
- code cleanup
20080530b
- fixed support for Chinese Simplified, Chinese Traditional, Portuguese and Portuguese Brazil language packs for .NET 2.0 SP1, .NET 3.0 SP1 and .NET 3.5
20080530
- added support for NetFx20SP1_x86.exe, NetFx20SP1_x86XX.exe, NetFx30SP1_x86XX.exe and dotnetfx35.exe
- added almost complete support for dotnetfx35langpack_x86XX.exe (.NET 2.0 SP1 and .NET 3.0 SP1 language packs)
- if a language pack is integrated, the name of the silent DNF20 and DNF30 executables will contain the language code (eg, DNF30_fr.exe)
- included newer version of 7zS.sfx (version 4.57 + custom icon + compressed with UPX 3.03)
- updated _SNM.ini
- to make a single installation package, MERGE_FRAMEWORKS=13 should now be MERGE_FRAMEWORKS=FULL
- during setup of DNF30.exe and DNF35.exe, MSXML6 binaries are only copied if they don't yet exist in system32
- removed support for .NET 2.0, .NET 2.0 language pack, NET 3.0 and .NET 3.0 language pack
20070712b
- fixed bug with merged .NET 1.1/3.0 installer whereby .NET 1.1 would fail to install on Win2K
- changed processing order of .NET 1.1 hotfixes just in case (S*.msp, then NDP1.1*.exe, then M*.msp)
- Add/Remove Programs entry is now removed for all current and future .NET 2.0 hotfixes
- Add/Remove Programs entry is now removed for all current and future .NET 3.0 hotfixes
20070710b
- removed support for hotfixes named NDP1.1*.msp; use the original Sxxxxxx.msp and Mxxxxxx.msp names
- Add/Remove Programs entry is now removed for all current and future .NET 1.1 hotfixes (previously only KB886903)
20070710
- allowed slipstreaming of NetFX30*.msp files for Windows Presentation Foundation and the .NET 3.0 "wrapper"
- now checking for the existence of Windows Presentation Foundation and the .NET 3.0 "wrapper" before applying a NetFX30 patch
- you can now have a mix of *.msp and *.exe hotfixes for all .NET packages (previously only one type was allowed per package)
20070709
- added support for NetFX30-KB*.exe hotfixes for Windows Presentation Foundation (like KB932471) or the .NET 3.0 "wrapper"
20070624b
- workaround for harmless error message which appeared when SNM created empty dummy file
20070624
- added support for xpsepsc*.exe updates for .NET 3.0 and .NET 3.0 langpack; they don't have to be renamed
- it's no longer needed to rename msxml6_x86.msi to msxml6.msi
- the dummy file for KB886903 for .NET 1.1 is now 0KB instead of 1KB
20070201
- the entries in Add/Remove Programs for the .NET 2.0 hotfixes are removed
20070127
- msistub.exe (2.5 KB) is now used instead of StartX.exe (164.0 KB)
- the PROCESS_DNF3_DNF2 variable now defaults to SEPARATE, which means: create DNF20.exe and don't include .NET 2.0 in DNF30.exe
- updated readme.txt with info about msistub.exe
20070125
- updated readme.txt (.NET 3.0 cannot be installed from SVCPACK)
20070123
- any msxml6-KB* executable is accepted so people don't have to extract msxml6.msi (msxml6.msi is still accepted)
20070122
- some temp files and folders are removed earlier so you don't have to look at the mess while the silent installers are created
- added support for .NET 3.0 language pack (langpack3.exe)
- if the system on which the silent .NET 3.0 installer will be installed is Win2K, the .NET 3.0 portions won't execute (Christmas present for the absent-minded)
- faster querying for the Windows version
- updated readme.txt
20070121
- using hidcon.exe from Oleg_Sch (included in new script package) instead of cmdow.exe
- code cleanup
- updated readme.txt
20070120
- allow merging of .NET 1.1 with .NET 3.0 (install order: .NET 2.0, .NET 3.0 and then .NET 1.1)
- allow custom compression ratio setting from answer file
- main three .NET 3.0 components are left unextracted to keep down the size of the silent installer
- variable "PROCESS_DNF3_DNF3" is now called "PROCESS_DNF3_WRAPPER"
- the msxml6 binaries are processed individually to keep the total size down; you won't see an MSXML6 entry in Add/Remove Programs anymore
20070119-b
- forgot to allow renaming of langpack files
20070119
- fixed potential issue with Win2K if reg.exe is slipstreamed
- resulting installers can now be installed on a "normal" system too
- added support for .NET 3.0 (allow replacing msxml6.msi)
- optional answer file
- possibility to merge .NET 1.1 with .NET 2.0 packages

Edited by Tomcat76, 03 June 2008 - 10:47 AM.



How to remove advertisement from MSFN

#2
Super-Magician

Super-Magician

    Friend of MSFN

  • Members
  • PipPipPipPipPip
  • 970 posts
Since CMDOW causes problems with quite a few virus scanners, can you provide support for hidec?

Thanks for the script by the way. Wondering if you can add in .NET 3.0 some day...:whistle:

#3
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
I'll give RunHiddenConsole.exe another go... :)

#4
S3pHiroTh

S3pHiroTh

    Member

  • Members
  • PipPip
  • 122 posts
I have tried, but the language pack for Net 1.1 doesn't install at all.

#5
daddydave

daddydave

    Member

  • Members
  • PipPip
  • 102 posts
  • OS:Windows 7 x64
  • Country: Country Flag
It looks like a leading space accidentally slipped into the name of " SNM.cmd"

#6
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts

I'll give RunHiddenConsole.exe another go... :)

Doesn't work, just like many times before. So I'll stick with CMDOW.

I have tried, but the language pack for Net 1.1 doesn't install at all.

.NET did but the language pack didn't? That's odd... How big is DNF11.exe?

It looks like a leading space accidentally slipped into the name of " SNM.cmd"

That's not by accident :)

#7
S3pHiroTh

S3pHiroTh

    Member

  • Members
  • PipPip
  • 122 posts
Isn't accidentaly is for evidence!!! So that file is always the first file of the directory!

This is the size of my DNF11.exe

11.554.146 bytes

Edited by S3pHiroTh, 16 January 2007 - 10:24 AM.


#8
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
With that size the language pack can never be part of it. Is it called langpack.exe?

#9
S3pHiroTh

S3pHiroTh

    Member

  • Members
  • PipPip
  • 122 posts

With that size the language pack can never be part of it. Is it called langpack.exe?


Eh eh you found my error... I have renamed it language1.exe when I have download it... my apologies. :ph34r:

EDIT: Thanks man, this script works well :D

Edited by S3pHiroTh, 16 January 2007 - 02:37 PM.


#10
Super-Magician

Super-Magician

    Friend of MSFN

  • Members
  • PipPipPipPipPip
  • 970 posts
OK, thanks for trying the RunHiddenConsole thing. Never mind...:whistle:

#11
glentium

glentium

    SQL DBA

  • Members
  • PipPip
  • 183 posts
this is great, thanks Tomcat!
btw, I know that dotnet30 is actually dotnet20 plus extras, but for people who want those extras, would you please add support for using the dotnet30 installer instead?

#12
Kiki Burgh

Kiki Burgh

    MSFN Expert

  • Members
  • PipPipPipPipPipPip
  • 1,426 posts
hi all! i see the same crowd here :P ... just stumbled upon this via HFSLIP ... i thought this would be discussed in HFSLIP too ... and eventually included in the script? just asking ...

#13
S3pHiroTh

S3pHiroTh

    Member

  • Members
  • PipPip
  • 122 posts

hi all! i see the same crowd here :P ... just stumbled upon this via HFSLIP ... i thought this would be discussed in HFSLIP too ... and eventually included in the script? just asking ...


Mmmhhh i think that copy this script in HFTOOLS is the better idea, and HFSLIP check for it (create a NETFRW directory to copy files), will create the silent installers

#14
glentium

glentium

    SQL DBA

  • Members
  • PipPip
  • 183 posts
I don't think anyone would want to recreate dotnet installers everytime HFSLIP is run! just use this tool once (or when another patch for dotnet is available and support for it is added to SNM) to create the installers and add them to HFSVCPACK folder. although the idea is possible, why add bloat to HFSLIP with this one? I believe creating silent installers is beyond HFSLIP principle. HFSLIP is geared toward (and EXCELLENT for) slipstreaming/integrating/(now 'guirunonceing') hotfixes, updates and much, much, much more, and not for creating silent installers... :)

Edited by glentium, 17 January 2007 - 09:38 PM.


#15
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
Dotnet3 is such a beast.... And Windows Communication Foundation, Windows Presentation Foundation and Windows Workflow Foundation won't install if .NET 1.1 is installed in the same go.

Next version:
- support for dotnet3.exe (not yet the language pack, though langpack2.exe is supported)
- optional answer file (install or ignore specific components, set some file names, and merging .NET 1.1 with .NET 2.0)
- fix potential problem with Win2K if reg.exe is slipstreamed (not sure if that really is a problem)
- installers can be tested on an already installed system
- overwrite msxml6.msi from .NET 3.0

Edited by Tomcat76, 19 January 2007 - 08:54 AM.


#16
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
New version :)

#17
daddydave

daddydave

    Member

  • Members
  • PipPip
  • 102 posts
  • OS:Windows 7 x64
  • Country: Country Flag
I am running the new version under Windows 2000, no language packs and no .NET3.0, and it created the DNF11.exe file after about 1.5 hours and is has been on "Creating silent .NET 2.0 installer..." for about 40 minutes. Should I assume this is normal? I guess there is quite a bit of processing going on.

To be honest I was running a cpu intensive VM for a while too, but I am out of it now, and I noticed the same with the old version.

Edited by daddydave, 19 January 2007 - 12:52 PM.


#18
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
It isn't normal. How much memory do you have? Are you creating these installers in a VM?


[script updated again - see changelog for details]

#19
daddydave

daddydave

    Member

  • Members
  • PipPip
  • 102 posts
  • OS:Windows 7 x64
  • Country: Country Flag

It isn't normal. How much memory do you have? Are you creating these installers in a VM?


Not running the script under a VM, but see edit to previous post. The other VM CPU% did spike at times, it was running an unattended Windows install of all things!

Physical: 457136 KB
Pagefile: initial 672MB, Current 672MB,, maximum 1344MB, recommended 669MB
Processor: Sempron 3200 I think

If I run it again, I'll try increasing the pagefile and running it by itself. 1 GB memory stick is in my future I hope.


EDIT Memory usage of 7za.exe changes every second but gets over 300,000 K sometimes according to Task Manager. It takes a while (a minute maybe?) for it to add a second to CPU Time for 7za, currently at 2:38

Edited by daddydave, 19 January 2007 - 01:03 PM.


#20
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
I don't really know how much RAM is needed and how big the pagefile should be for this sort of stuff. I was using 2x512MB sticks for a long time and now have 2x1024MB sticks. The pagefile has been on 2GB all this time.

My timings:
* create admin source for DNF11 and langpack + slipstream patches = 24 seconds
* create admin source for DNF20 and langpack + slipstream patches = 16 seconds
* create DNF11.exe from admin source = 43 seconds
* create DNF20.exe from admin source = 64 seconds

I know that the process of making the EXEs requires quite a bit of memory and that the amount of memory does have a say in this, but your timings are really extreme. I suppose mine are too but it shouldn't be too much slower.

Set your pagefile to a fixed 1024MB or 1536MB (identical min & max) and see if that helps.

#21
S3pHiroTh

S3pHiroTh

    Member

  • Members
  • PipPip
  • 122 posts
Only 2 questions... why do you integrate net framework 2.0 in the 3.0 net package? I know that the 3.0 net framework is 2.0 net plus some other applications... I think is better (for smaller installer) if you write in the install requirement that "if you want to install 3.0, you MUST install 2.0 net package too". Isn't it better?

Another question is: the net framework 3.0 doesn't install windows cardspace or something like it (maybe I don't remember well)? If yes, I haven't any icon of Windows Cardspace in Control Panel.

Edited by S3pHiroTh, 19 January 2007 - 02:36 PM.


#22
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts

Only 2 questions... why do you integrate net framework 2.0 in the 3.0 net package? I know that the 3.0 net framework is 2.0 net plus some other applications... I think is better (for smaller installer) if you write in the install requirement that "if you want to install 3.0, you MUST install 2.0 net package too". Isn't it better?

If you want to exclude .NET 2.0 from the .NET 3.0 package, simply set PROCESS_DNF3_DNF2 to NO in the answer file. I won't make this the default behavior because .NET 2.0 is part of the .NET 3.0 package you download from Microsoft.

Another question is: the net framework 3.0 doesn't install windows cardspace or something like it (maybe I don't remember well)? If yes, I haven't any icon of Windows Cardspace in Control Panel.

Well... Don't really know what to say to that.
I don't see it in the .NET 3.0 package and can't find any info on how to deploy it either (provided it's hidden somewhere in .NET 3.0)...

#23
glentium

glentium

    SQL DBA

  • Members
  • PipPip
  • 183 posts
thanks for the new version, tomcat! :)

btw, in HFSLIP, does including your dotnet30 silent installer product of SNM at SVCPACK makes including KB927977 (msxml6) at HF unnecessary?

Edited by glentium, 19 January 2007 - 10:27 PM.


#24
Tomcat76

Tomcat76

    MSFN Junkie

  • Developers
  • 3,174 posts
@daddydave
Please try the latest version. You can change the compression ratio with it. Try COMPRESSION_RATIO=MED and if that doesn't help go with COMPRESSION_RATIO=LOW.

@S3pHiroTh
Windows Cardspace is installed when using the installer on an existing Windows system. I'll do a test later to see if it works from SVCPACK too.

@glentium
The problem with the msxml6 package in .NET 3.0 is that it's older than the KB927977 hotfix *and* will overwrite the newer file versions that you slipstreamed. You basically have two options:
1) slipstream the binaries from KB927977 into Windows and create a silent .NET installer that doesn't include msxml6 (PROCESS_DNF3_MSXML6=NO)
2) do not slipstream KB927977 into Windows but place the msxml6.msi file from it in the SNM working folder
The end result is the same.

#25
daddydave

daddydave

    Member

  • Members
  • PipPip
  • 102 posts
  • OS:Windows 7 x64
  • Country: Country Flag
COMPRESSION_RATIO=LOW did the trick for DNF20. I tried MED
DNF11 creation has been zippy ever since increasing the page file size as you suggested

So I'll use DNF11 from blank COMPRESSION_RATIO= and DNF20 from COMPRESSION_RATIO=LOW

Thanks a lot! :thumbup

Edited by daddydave, 20 January 2007 - 09:02 PM.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users



How to remove advertisement from MSFN