Welcome to MSFN

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


Tomcat76

Silent .NET Maker (latest update: 20080603)

376 posts in this topic

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
0

Share this post


Link to post
Share on other sites

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:

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites
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 :)
0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites

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?

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites
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

0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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]

0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites
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)...

0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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
0

Share this post


Link to post
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.