Jump to content

Silent .NET Maker (latest update: 20080603)


Tomcat76

Recommended 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
Link to comment
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 :)
Link to comment
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
Link to comment
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

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