Windows 8.1

Clanger

Moderator
Staff member
I will not allow any links to or discussions about activation tools, home brewed iso's, warez or download links to LTSB and LTSC or other restricted editions or sharing of an Microsoft files however small they may be, in this thread or any other thread of mine.

I would ask users to help moderate my topics, be polite and ask posters to remove any offending material. If they will not remove any such material please use the Report link, Nuhi has the final say.

Please help to keep ntlite/community Takedown Notice free, Thank You.
==============================================


I am new to windows 8.1 and using an iso that includes November 2014 update roll up.
I need to install .net3.5. Enabling it in Features on a running system it downloads the file, where is it downloaded to, Software Distribution, and what type of file is it, an executable, cab file or other?
I need to update the image, do i need a Servicing Stack and the latest CU only or do i need to add all the updates in the updates downloader tool.
What would be the install order on a running system, install .net 3.5 then the SS and CU as per usual?
==================================================================

I am using this post as a temporary location for 8.1 related uploads. Before running any file check them through as they may disable things you need to use, i run them as they are but users can cherry pick bits that suit them.

Download from Here
 
Last edited:
OK, Setupcomplete runs after OOBE, Check. It's actually working against me.

Is there any way to make a file that runs before? I've read somewhere that you can force the PC to boot in Audit mode, execute a script then reboot in OOBE, but not the specifics of HOW. Did anyone here try that?

oobe.cmd, needs to be next to setupcomplete.cmd
 
So, I was having trouble with different machines having different drivers and found something that could be very useful for scripting NTLite SetupComplete.cmd:

Code:
if hostname=="PC1" goto 1
if hostname=="PC2" goto 2

:1
%WINDIR%\Setup\Files\ one entry for each thing you want to install only in PC1
goto Common

:2
%WINDIR%\Setup\Files\ one entry for each thing you want to install only in PC2
goto Common


:Common
%WINDIR%\Setup\Files\ one entry for each thing you want to install on both (or all) PCs
wusa.exe "%WINDIR%\Setup\Updates\windows8.1-kb2990967-x64_e3f425d271aeadfe382fe4e6f3ead1363217f605.msu" /quiet /norestart
rd /q /s "%WINDIR%\Setup\Updates"
rd /q /s "%WINDIR%\Setup\Files"
del /q /f "%0"

Of course, the actual file is way more complex than that since each PC has their own Office Serial, Corel Serial, and one has Corel Video Studio... you get the idea.

Which brings me to these questions:

Can I manually edit the fields I want on Autounattend.xml in notepad++ or should I ntlite a single image for each file and simply swap them as needed?

how do I force the installation of a driver (unsigned) via command line?
 
So, I was having trouble with different machines having different drivers and found something that could be very useful for scripting NTLite SetupComplete.cmd

Which brings me to these questions:

Can I manually edit the fields I want on Autounattend.xml in notepad++ or should I ntlite a single image for each file and simply swap them as needed?
For setupcomplete you can find the brand or model if you haven't:
Code:
set mf=wmic bios get version /value
%mf% | findstr /i brand
if not errorlevel 1 set mfr=brand&goto :drvsetup

:drvsetup
cd %mfr%
install drivers
You can edit autounattend.xml but there could be a command that won't work if is not run on first logon.
 
For setupcomplete you can find the brand or model if you haven't:
Code:
set mf=wmic bios get version /value
%mf% | findstr /i brand
if not errorlevel 1 set mfr=brand&goto :drvsetup

:drvsetup
cd %mfr%
install drivers
You can edit autounattend.xml but there could be a command that won't work if is not run on first logon.

Managed to do that though my code turned out to be a little different, since I still need to account for two identical models (both "Inspiron 13-5378") with different configurations.

Hello friend ..can you share your modified windows 8.1 iso?
I'm not sure of it, but isn't that against NTLite TOS?
 
Hello friend ..can you share your modified windows 8.1 iso?

No and i never will. That said i did use a Tiny XX iso years ago to learn about liting so i could build my own. I share (most)other stuff though, presets tweaks useful topics elsewhere, anything that wont get nuhi a takedown notice.

I'm not sure of it, but isn't that against NTLite TOS?
Aswell as being unethical.
 
Ok, a few notes gathered from my own experience:

When doing a NLite image for multiple machines, make sure Setupcomplete.cmd has a way to tell which machine you're installing at a given time. As Kasual sugested, this could be acomplished by getting the model name from WMIC or, the Hostname. In case hostname is used, a different AutoUnattend.xml is needed for each machine.

I much prefer to use the Hostname method, since it lets me swap between multiple versions of an install easily. It's also possible to combine both, for cases where one machine is an ancient Pentium Dual Core 1.6GHz whose screwed up bios has no identifiers other than 'AMI'.

This is the way I do it:

Code:
For /F "tokens=2 delims==" %%a in ('wmic computersystem get model /value') do set model=%%a
For /F %%a in ('hostname') do set pcname=%%a
goto %model%
goto %pcname%
goto error

This way, if it fails to find a Model Name, it'll look for a Hostname, and only trully return an error if none is found. In case of multiple machines of the same model (or some screwed Gigabyte BIOS whose Model is just 'Gigabyte'), I do a section like this:

Code:
:Model Name
start wait %WINDIR%\Setup\Files\Program1.exe /switch1 /switch2
start wait %WINDIR%\Setup\Files\Program2.exe /switch1 /switch2
goto %pcname%

:Hostname1
start wait %WINDIR%\Setup\Files\Program3a.exe /switch1 /switch2
goto common

:Hostname2
start wait %WINDIR%\Setup\Files\Program3b.exe /switch1 /switch2
goto common

It is useful when some program or another happens to require one serial number for each machine, or when one of those has a driver or device the other doesn't.


I won't claim my method is perfect, but it does work against 7 different PCs (Ok, maybe 6 and a undead zombie notebook, but one more will arriving next week and it will be included) from various family members. It also avoids bloating the installation media or having to redo it anytime a program or driver updates, since those would also be included on SetupComplete Scripts.


Now for some more switches!

Code:
::Intel Graphics Driver (Tested on 3rd, 4th, 6th and 7th gen drivers, doesn't work on unsigned drivers)
%WINDIR%\Setup\Files\Intel7th\igxpin.EXE -overwrite -s

::Geforce Drivers (Make sure to lite the thing first! Also, 3XX and 9XX drivers are different!)
%WINDIR%\Setup\Files\Geforce\Setup.EXE /clean /noreboot /passive /noeula /nofinish


::Notepad++ and Notepad Replacer (Updater and autocompletion plugins removed, because they always update when I'm in a hurry!)
%WINDIR%\Setup\Files\Notepad.exe /S
rd /q /s "%ProgramFiles%\Notepad++\updater"
rd /q /s "%ProgramFiles%\Notepad++\autoCompletion"
%WINDIR%\Setup\Files\Replacer.exe /NOTEPAD="C:\Program Files\Notepad++\Notepad++.exe" /SILENT

::Microsoft Office Non-Click to Run
%WINDIR%\Setup\Files\Office\Setup.exe /adminfile Lite.msp ::<<You'll have to run Setup.exe /admin first to created said file. That said, there's a lot of customizations possible in there.
rd /q /s "%SYSTEMDRIVE%\MSOCache" :: To Delete the trash left by the install

Oh, and as a last note: Some drivers dislike being ntlited into the windows image. Intel Thermal Framework for instance, breaks anything related to other sensors (Why it'd break accelerometer drivers?! Why?!) when that is done. So the setupcomplete method is preferable.
 
Managed to do that though my code turned out to be a little different, since I still need to account for two identical models (both "Inspiron 13-5378") with different configurations.
If you want to install different programs then find the serial number.

Instead of "wmic computersystem" to get brand and model, I use "wmic csproduct".

To get machine serial number use "wmic csproduct get identifyingnumber /value", if you try in VBox, 0 will be the serial number.
 
Windows 8.1 is known working out of the box(no additonal drivers needed to install) on Intel 8th generation Core i3 8300 and B360 chipset.
If anyone gets 8.1 working on any 9th generation 9xxx cpu and 8th or 9th gen chipset combination with no additonal drivers needed to install then please post your findings and help keep 8.1 alive.

I have done some very limited tseting on LTSC, its buggy, grows by 2 to 3gb after install(captured image, latest CU, .Net3.5 installed). The only plus side is the i3 8300 has a build 1809 compatible igpu driver. I doubt ms will release a new LTSC based on the latest build.

I have finished my 8.1 work, i have enough to call it a day.
 
Last edited:
Here am I with another weird question:

Can I use OOBE.cmd to create the user account (based on the SerialNumber)?

like:

net user username password /ADD /FULLNAME:"User_Fullname" /PASSWORDCHG:Yes /EXPIRES=No

and if answer is yes, should I go about removing the old WinX folder in OOBE.cmd or in Setupcomplete.cmd?
 
OK, the OOBE.cmd thing doesn't seem to be working.

Also, there is one pesky machine (3rd gen i3, 4gb RAM, 32gb SSD) that seems to ignore Setupcomplete no matter what I do. Any ideas?
 
Hi PhsMu, how ended your findings?
Here am I with another weird question:

Can I use OOBE.cmd to create the user account (based on the SerialNumber)?
You can use it partially, but setupcomplete.cmd is recomended.
OK, the OOBE.cmd thing doesn't seem to be working.

Also, there is one pesky machine (3rd gen i3, 4gb RAM, 32gb SSD) that seems to ignore Setupcomplete no matter what I do. Any ideas?
This would depend on the speedy machine?
The setupcomplete.cmd is big or small?
 
I've been away for a while. (Went to Chile to see the Eclipse.) While away I noticed that there have been substantial fixes to NTLite with respect to Win7 and Win81. So what did I do the day I got back home? Why I updated my iso and tried a Refresh of Win8.1. (That is, a Refresh where I use Windows Setup from within Windows to reinstall Windows and tell it to keep my files and customizations.)

Good news. It worked this time.

In the past I could not get a Manual Refresh of Win8.1 to finish. It would always error out the last part and then start to roll back to the previous version of Windows. This time it completed. (Manual Refreshed of Win7 have worked.)

Now, I don't know if it was the change to NTLite 1.8.0.7070, or if it was some updates that Microsoft did to update files (I saw an updated Service Stack), or an update to Rufus. Or perhaps the dedicated Win8.1 AMD RAID driver I found on the web. (Courtesy of Clanger, I think.)

Whatever, it's working now. (I would have hated to go back and do all the customizations that I've done to Win8.1)
 
WE had an eclipse here a number of years back, if you get the chance to see just 1 in your lifetime its worth it :)
 
So now that everything is up and running nicely on the Refresh Win8.1 Pro, I tried to update to the latest Security fixes only via WSUSOffline updater.

That program has always worked for me in the past. And it found 49 updates to install. (When I used nuhi's list to prepare Win8.1, I did not get the latest Rollup, because I only want Security Fixes. And Microsoft sneaked in that Telemetry KB, which I suspect is in their last Rollup. So 49 updates sounds reasonable for this Refresh of mine.)

But now Windows gets to 99% of the "updating your computer now" and then gives me the message that Windows "could not complete the update." And it starts to roll back. But really all it does is go into that error loop.

I read on the web that the fix for this is to delete the folders/files in SoftwareDistribution. Which I did. But no joy.

So now I've restored to where I was and I let NTLite do a Complete Cleanup. And then I let Windows Diskclean do its thing.

So I'm trying WSUSOffline updater again, as I type.

We'll see what happens. I mostly suspect a problem with WSUSOfflne at this point in time, as they came out with a quick "a" revision to their Updater after the last release.
 
NTLite to the rescue! After spending a day trying and retrying different tricks to get Windows to complete an update after running WSUS Offline Updater, I finally had the brilliant idea to let NTLite try it.

So I loaded my Live Win8.1 and pointed the Updater to the WSUS Offline Directory. Once loaded, NTLite had 3 red entries. Two of them said "Not Recommended," as the KB's prevented the install of .NET 3.5. (If I recall correctly. Don't know if I ever need to install .NET 3.5, but whatever.) So I Removed them from the list.

The other, and perhaps this is why Windows failed to complete the update, required a prerequisite KB, which WSUS hadn't downloaded, and apparently, neither had NTLite when I made my .iso.

So I downloaded the KB, put it in the WSUS folder, retried NTLite and no red entries.

So I let NTLite do the updates.

To my surprise, when I rebooted Windows (NTLite didn't say that I had to do that), I did NOT get the usual screen that tells you to not shut down your computer while it updates. Nor did I get the similar screen on boot. So apparently NTLite has the capability to install KB's in place.

One other thing that I noticed is that NTLite installed most of the KB's in the list, even though they had already been installed. (That is, 195 instead of WSUS's 49.) But like WSUS, NTLite did advise me that several KB's did not apply to me, which, I expect, is due to the trimming I've done to Windows.

When all this was done (and after I made a backup image) I tried Windows' updater for grins. I am pleased to say that all it offered me were a few "important" updates and a few "optional" updates. Nothing important. (Of course, it offered me the latest Rollup. But I didn't want that.)
 
Back
Top