Hello all,
I figured this tutorial may come in handy to a few people out there since the documentation for getting this to work is quite atrocious.
What this tutorial is:
A step-by-step walkthrough of setting up wpa_supplicant.conf to access advanced networking protocols that we otherwise don't have access to (note, this will ONLY work with root at the moment).
What this tutorial is not:
A wireless troubleshooting thread for any wireless issues not related to wpa_supplicant, EAP-TLS, EAP-TTLS, etc.
Thanks ahead of time.
NOTE: This tutorial will be giving instructions for a Windows 7 machine, but 90% of the code I provide can easily be copied over to Linux/BSD/OSX, just replace with the Bash equivalents.
To begin, you will need a few things:
--ADB, with working drivers, though you don't NEED root access through it it is nice to have, since it cuts the typing in half, and the setup for that can be found here: [App]: ADB Root Hijack [ADB Runs as Root now]
--openSSL, for converting certificates to the proper formats.
Windows instructions: Requires Cygwin, see this link here. This will install several other useful tools, and you'll love Cygwin if you're a power user
Linux/BSD/OSX instructions: install using your favorite repositories or from binaries (in the case of OSX). For Ubuntu/Debian: sudo apt-get install openssl
--You will need access to the Development menu (use an app or the Any Cut app to make a shortcut), as well as Root Browser lite (or Root Explorer).
--Alot of patience, and a bit of time. This should be straightforward, but don't expect a perfect solution for everyone.
1) The most important step, since this will cause you no end of headaches for possibly an hour or two as you trace it down: Go into the Development menu, UNCHECK USB Debugging and RECHECK it, then UNCHECK Auto Mount. So, even if debugging is checked, uncheck and check it anyway. And make SURE Auto Mount is unchecked, otherwise this will automatically install the "normal" NT drivers and screw up the entire process.
2) Plug in the Nook, and bring up the command line (cmd.exe). Run:
Code:
adb devices
If this returns an alphanumeric string (or anything), your device is in and you're good to go. Otherwise, check the other forum topics for troubleshooting (link to come).
3) To begin, we need to convert our tickets to the correct format. For this we will use OpenSSL. To make this easy, I piled all of my working space into a folder in the root of the C: drive, called "certs". For this example, I will assume that you were given a root certificate named rootCA.crt and a private certificate names [email protected].p12 (because I was, for the eduroam worldwide network).
This example also assumes EAP-TLS authentication. To convert the files:
Code:
openssl x509 -in rootCA.crt -out rootCA.der -outform DER
openssl x509 -in rootCA.der -inform DER -out rootCA.pem -outform PEM
then
openssl pkcs12 -in [email protected] -out cert.pem -clcerts -nokeys
openssl pkcs12 -in [email protected] -out key.pem -nocerts
Note: even if your business/Uni doesn't use a separate hashed key normally (For example, the University of Alaska system), you will need it here. Normally a certificate app handles all of this (on AOSP and custom builds).
4) Thanks to good ol' FSTAB, we will have to remount /system so we can read/write to it:
Code:
adb shell
su
mount -o remount,rw /system /system
5) Now, we have three new files: rootCA.pem, cert.pem and key.pem in the C:\certs folder. We push them to their proper directory on the NT:
Code:
adb push rootCA.pem /system/etc/wifi/
adb push cert.pem /system/etc/wifi/
adb push key.pem /system/etc/wifi/
Note: This is where it gets tricky without root ADB access...the option is to push them to "/media/My Files/My Downloads/" (including quotes) and then use a terminal or root browser to move them to /system/etc/wifi/
6) Next, we get to pull wpa_supplicant finally!
Code:
adb pull /system/etc/wifi/wpa_supplicant.conf .
Note: Make sure to include the . at the end, this means 'copy it to the current directory'
7) Open wpa_supplicant.conf in Wordpad (NOT notepad, wrapping issues), and build a profile based on the examples located here.
Here is an edited version of mine, if you use EAP-TLS this will work for you:
Code:
network={
ssid="YourAPNameHere"
scan_ssid=1
key_mgmt=WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
eap=TLS
identity="[email protected]"
ca_cert="/system/etc/wifi/rootCA.pem"
client_cert="/system/etc/wifi/cert.pem"
private_key="/system/etc/wifi/key.pem"
private_key_passwd="yourPassHere"
priority=20
}
Change ssid, identity, and private_key_passwd to your respective information.
NOTE: priority, near the bottom, determines when it will connect to the network when others are around. Compare it to the values of the priority's set in /data/misc/wifi/wpa_supplicant.conf, the higher the value the higher the priority when they're all within range.
Now save and close the file.
8) Now, we push and reboot:
Code:
adb push wpa_supplicant.conf /system/etc/wifi/
then reboot the nook.
Now, after reboot, it should be good to go!
Notice, one bit of trouble I ran into, if you just get "error" when turning on the wireless after reboot, double-check that your certificates are correct and in the correct places, and wpa_supplicant.conf points at them. If thats fine, try erasing /data/misc/wifi/wpa_supplicant.conf, then reboot, and the list will be rebuilt and your AP will automatically connect.
Please let me know if there are any issues with the instructions, it's 6am and I haven't slept more than 8 hours in the last 3 days troubleshooting this, building kernels and playing Skyrim
reserved for future things
Also of note: I'm working on making this into scripts, don't worry everyone. And, if you bork your wifi, I will have a wireless fix in the works too.
Hi
First of all, thanks for this tutorial
I'm pretty sure this should be very straightforward but not to mess this thing up what do I need to change for a network with the following definitions:
Network SSID: eduroam
Security: 802.1x Enterprise
EAP method: PEAP
Phase 2 authentication: MSCHAPV2
Cheers
LacerdaPT said:
Hi
First of all, thanks for this tutorial
I'm pretty sure this should be very straightforward but not to mess this thing up what do I need to change for a network with the following definitions:
Network SSID: eduroam
Security: 802.1x Enterprise
EAP method: PEAP
Phase 2 authentication: MSCHAPV2
Cheers
Click to expand...
Click to collapse
Hey, it's not a problem at all. Pulled from the source here: NookDevs.com wpa_supplicant.conf I built this skeleton here:
Code:
network={
ssid="eduroam"
scan_ssid=1
key_mgmt=WPA-EAP
pairwise=CCMP TKIP
group=CCMP TKIP
eap=PEAP
identity="[email protected]"
password="YOUR-PASSWORD"
ca_cert="/system/etc/wifi/cacert.pem"
phase1="peapver=0"
phase2="MSCHAPV2" }
As you can see, you'll need to enter your University email in the identity field and your password in the password field, and if you don't have the needed certificates/password/etc you can get that from your local IT office (I would ask to speak with your network technicians though, helpdesk may not have it). Make SURE to read the instructions in that link, the openssl bit is different than the guide above!
Thanks!
On monday I will try that and will report the outcome.
Cheers
Hi.
It worked like a charm! No problem at all.
Thanks!
Cheers
Awesome! Glad to hear it.
As Promised Today djrbliss a.k.a Dan released Root Exploit for XT910 And Droid Bionic which running on Jellybean..
For now Technically not possible to root on windows but may be in future one click root tool will be available from Dan..
First to root you Have to use Linux. Preferably 32Bit if u have Ubuntu in Ur Computer proceed if not u can try LiveCd to root your Phone.
Once you Booted into Ubuntu..
Type
Code:
mkdir /tmp/share
Install Samba Package
Code:
sudo apt-get install samba
Edit the Config for file samba as mentioned Below
Code:
sudo gedit /etc/samba/smb.conf
add the following Lines as mentioned below
Code:
[share]
path = /tmp/share
available = yes
valid users = guest
read only = yes
browsable = yes
public = yes
save it then Create username through this command
Code:
sudo useradd guest -m -G users
then Set password
Code:
sudo passwd guest
Then restart Samba Server
Code:
sudo restart smbd
Download the Files
Code:
cd /tmp/share
wget http://vulnfactory.org/public/motoshare2.tgz
tar xvf motoshare2.tgz
sudo chmod 755 run.sh
you'll need to know the IP address of your Linux host, which you can get by running "ifconfig" from your terminal it should be 192.168.xx.xx not 127.5.xx.xx
Now take your Smartphone and Enable usb Debugging and the make sure that youare connected through WIFI
Open Stock "Files" r "Filemanger App"3rd party apps wont work
Open the "Files" app, and select "Remote storage". Click "Add storage", and fill in fields as follows:
Code:
Host IP address: [your Linux machine's IP address]
Domain name: WORKGROUP
Shared folder name: share
User: guest
Password: [the password you created above]
your phone will be mounted in Linux share to complete process plug in your Phone to Computer Via usb and then type following command
Code:
cd /tmp/share/
sudo ./run.sh
Congrats!u are rooted your RAZR XT910 And Droid Bionic..
Every Credit Goes to Dan Rosenberg i take no credits ....im just posting to help people...
Donate to Dan
http://goo.gl/zBGb0
Original Thread
I can't thank enought to Dan Rosenberg for this exploit!
Works great!!
forget to set a password on the share
sudo smbpasswd -a guest
Thank u so much :laugh:
ronni24 said:
forget to set a password on the share
sudo smbpasswd -a guest
Thank u so much :laugh:
Click to expand...
Click to collapse
Thanks mate, this is missing in op.
I'm using Ubuntu 64 bit and still can't root I followed steps then finally I receive this messages
[email protected]:/tmp/share$ sudo ./run.sh
[sudo] password for khaled:
./run.sh: line 30: ./adb.linux: No such file or directory
[+] Waiting for device...
./run.sh: line 33: ./adb.linux: No such file or directory
[+] Device found.
[+] Pushing exploit...
./run.sh: line 38: ./adb.linux: No such file or directory
./run.sh: line 39: ./adb.linux: No such file or directory
./run.sh: line 40: ./adb.linux: No such file or directory
./run.sh: line 42: ./adb.linux: No such file or directory
./run.sh: line 43: ./adb.linux: No such file or directory
[+] Rooting phone...
[+] Your phone may appear to reboot. Please ignore this and continue with the exploit.
./run.sh: line 49: ./adb.linux: No such file or directory
[+] Please press any hardware button on your phone.
[+] Don't worry if the phone is unresponsive at this time.
[+] Press enter to continue once you have pressed a hardware button.
Thanks Dan.
U can't root with Ubuntu 64Bit..u have to use 32Bit
For more Detailed Guide check this
http://forum.xda-developers.com/showthread.php?t=2190362
Sent from my Golden'd Atrix HD MAXX using xda app-developers app
Big thanks!!!
L7iharsha said:
U can't root with Ubuntu 64Bit..u have to use 32Bit
For more Detailed Guide check this
http://forum.xda-developers.com/showthread.php?t=2190362
Sent from my Golden'd Atrix HD MAXX using xda app-developers app
Click to expand...
Click to collapse
i rooted with zorin 64bit , and its fine Dan said any linux with term will work. window user have no chance atm
Where do I add the lines in the txt file?
EDIT:
Done,add the lines at the end of the txt file.
Seems like everything went correct and no errors,why my device isn't rooted ?
Thanks DAN.
JB?
Thanks!!
Muchas gracias ha funcionado a la perfección en mi Ubuntu 12.10 x64
Enviado desde mi XT910 usando Tapatalk 2
DigitalJosee said:
JB?
Click to expand...
Click to collapse
yes u can root your XT910 Running on JB
cant add storage
Hi I cant add any storage.Have message on phone"the information you entered is incorrect "
ip is 192.168.0.6
domain group WORKGROUP
shared folder name shared
username guest
password guest
Just change the password again and it should work
L7iharsha said:
As Promised Today djrbliss a.k.a Dan released Root Exploit for XT910 And Droid Bionic which running on Jellybean..
For now Technically not possible to root on windows but may be in future one click root tool will be available from Dan..
First to root you Have to use Linux. Preferably 32Bit if u have Ubuntu in Ur Computer proceed if not u can try LiveCd to root your Phone.
Once you Booted into Ubuntu..
Type
Code:
mkdir /tmp/share
Install Samba Package
Code:
sudo apt-get install samba
Edit the Config for file samba as mentioned Below
Code:
sudo gedit /etc/samba/smb.conf
add the following Lines as mentioned below
Code:
[share]
path = /tmp/share
available = yes
valid users = guest
read only = yes
browsable = yes
public = yes
save it then Create username through this command
Code:
sudo useradd guest -m -G users
then Set password
Code:
sudo passwd guest
Then restart Samba Server
Code:
sudo restart smbd
Download the Files
Code:
cd /tmp/share
wget http://vulnfactory.org/public/motoshare2.tgz
tar xvf motoshare2.tgz
sudo chmod 755 run.sh
you'll need to know the IP address of your Linux host, which you can get by running "ifconfig" from your terminal it should be 192.168.xx.xx not 127.5.xx.xx
Now take your Smartphone and Enable usb Debugging and the make sure that youare connected through WIFI
Open Stock "Files" r "Filemanger App"3rd party apps wont work
Open the "Files" app, and select "Remote storage". Click "Add storage", and fill in fields as follows:
Code:
Host IP address: [your Linux machine's IP address]
Domain name: WORKGROUP
Shared folder name: share
User: guest
Password: [the password you created above]
your phone will be mounted in Linux share to complete process plug in your Phone to Computer Via usb and then type following command
Code:
cd /tmp/share/
sudo ./run.sh
Congrats!u are rooted your RAZR XT910 And Droid Bionic..
Every Credit Goes to Dan Rosenberg i take no credits ....im just posting to help people...
Donate to Dan
http://goo.gl/zBGb0
Original Thread
Click to expand...
Click to collapse
pardon for my stupid request i had do all bat when i connect the phone at usb cable after i push file,after i push remote storage after i write my ip addres(of wify connection of phone or af connection of linux?????) afte wath i do????????workgroup is correct or i did write name of my workgroup ad after at user name i write the name of user of linux or user name of router Fastw...... and the password of mi utence of linux or password for connect to fastwwwwww?
i repeat pardon for mi stupid answer.tanks tanks
It's necessary quote full OP just to ask a question?
ulkika said:
pardon for my stupid request i had do all bat when i connect the phone at usb cable after i push file,after i push remote storage after i write my ip addres(of wify connection of phone or af connection of linux?????) afte wath i do????????workgroup is correct or i did write name of my workgroup ad after at user name i write the name of user of linux or user name of router Fastw...... and the password of mi utence of linux or password for connect to fastwwwwww?
i repeat pardon for mi stupid answer.tanks tanks
Click to expand...
Click to collapse
Host IP address: [your Linux machine's IP address] = something like 192.168.0.x obtained on Ubuntu typing ifconfig into a terminal
Domain name: WORKGROUP = just write WORKGROUP
Shared folder name: share = just write share
User: guest = just write guest
Password: [the password you created above] = write the password you created during the setup.
L7iharsha said:
Just change the password again and it should work
Click to expand...
Click to collapse
Changed password even set without and still no change
There's a missing line after you set the password
Type after you've set the guest password
sudo smbpasswd -a guest
Use the same password as before
And then follow the next steps with the first step being restart samba
It caught me out
goodvsbad said:
Changed password even set without and still no change
Click to expand...
Click to collapse
Follow this step:
ronni24 said:
forget to set a password on the share
sudo smbpasswd -a guest
Thank u so much :laugh:
Click to expand...
Click to collapse
Dear all,
I installed Unbuntu Touch on my Nexus 4 yesterday (18.09.2013, with the build 20130917.1). It is working more or less, as expected :silly:
One of the problem I am facing is that the ssh server is not working. I could install (and --reinstall) it without problem (apt-get install openssh-server ssh), but if I check with "ps -ef|grep ssh") I only see the ssh-agent and the connection from another computer is not working.
Any idea?
Best regards,
Pierre
[email protected]:/# apt-get install --reinstall openssh-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0 B/231 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 38659 files and directories currently installed.)
Preparing to replace openssh-server 1:6.2p2-6 (using .../openssh-server_1%3a6.2p2-6_armhf.deb) ...
Unpacking replacement openssh-server ...
Processing triggers for ureadahead ...
Processing triggers for ufw ...
WARN: / is world writable!
WARN: / is group writable!
Setting up openssh-server (1:6.2p2-6) ...
[email protected]:/#
[email protected]:~$ ssh [email protected]
ssh: connect to host 192.168.1.69 port 22: No route to host
[email protected]:/home/phablet/Downloads# ps -ef | grep ssh
phablet 739 711 0 09:11 ? 00:00:00 ssh-agent
I just noticed that I have the same problem...
If I had time I would look at it, too, but right now I have other things to do...
To98 said:
I just noticed that I have the same problem...
If I had time I would look at it, too, but right now I have other things to do...
Click to expand...
Click to collapse
Same problem here. ssh to another device is possible, but no acces to phablet.
Same In GNex
try
sudo service ssh start
(if you are root or not you must use sudo)
but it does not automatically start when reboot
Still not wokring
[email protected]:/# service ssh start
ssh start/running, process 5890
[email protected]:~$ ssh [email protected]
ssh: connect to host 192.168.1.69 port 22: No route to host
[email protected]:~$ ps -ef|grep 5890
vmalep 12613 12544 0 13:00 pts/4 00:00:00 grep --color=auto 5890
chaoskernel said:
try
sudo service ssh start
(if you are root or not you must use sudo)
but it does not automatically start when reboot
Click to expand...
Click to collapse
thank you! installed version 57 and used
sudo service ssh start
work fine!
THIS IS OUTDATED, SEE THE NEW ARTICLE
How To Make Your Own Tiny or Lite Windows ISO
Hello Friends, Today I bring you a guide on how to properly mod your windows isos, to do anything you want :) [/SPOILER] [/SPOILER] [/SPOILER] To remove installed apps: dism.exe /Image:C:\Users\0110\Desktop\MODWINDOWZ\PATH...
forum.xda-developers.com
======================================
USING DISM.EXE AND POWERSHELL TO MODIFY WINDOWS ISOS
=============================================================================================
=======================================================
On today's Lesson of Whatever I got distracted on~! Here's how to take what we learned before...
About Modding Windows ISOs.. and Make it... HARDER XD
Unintentionally, of Course, but with Purpose.
Spoiler: ORIGINAL ARTICLE
[CLOSED] How To Make Your Own Modified Windows ISO
============================================================== HOW TO MAKE A MODIFIED WINDOWS ISO ============================================================== Mod Edit: Link to Tool removed. This ISO will work just fine In virtual...
forum.xda-developers.com
Let's learn and understand what the MSMG Toolkit was really doing..
Since MSMG Unfortunately Doesn't Work as needed for Windows 7 ISOs...
We will be using the built in Windows Tool, dism.exe, in Powershell~!
Spoiler: DOWNLOAD: DEBLOAT WINDOWS 7 TOOLS, "AKA" DW7
GOOGLE DRIVE:
DW7.zip
drive.google.com
(3 GB, INCLUDES ORIGINAL WIN7WSP1)
Spoiler: VIDEO GUIDE
Spoiler: SETTING UP THE TOOLS
Extract The DW7 Folder and Paste into C:\
Win7UltSP1 is an unactivated, Stock Windows 7 Ultimate image with Service Pack 1.
You may use this ISO, Or your own Windows 7 ISO.
You may also create your own directories!
The tools are to help brand new people by proving concept.
Spoiler: PREPARING THE install.wim FILE
Open Your ISO and copy the files of the ISO into the DVD folder of DW7..
Press the Windows key on the keyboard,
Search for Powershell, Right Click, Run as Admin..
Paste this command to See, and Select, an Image "Source" Number:
Dism /Get-WimInfo /WimFile:"C:\DW7\DVD\sources\install.wim"
Paste this command to Extract the Selected Image "Source" Number:
Dism /export-image /SourceImageFile:"C:\DW7\DVD\sources\install.wim" /SourceIndex:4 /DestinationImageFile:"C:\DW7\ISO\install.wim" /Compress:max /CheckIntegrity
NOTE THAT YOU CAN:
Change the SourceIndex:Number If you don't want Ultimate.
Spoiler: OUT WITH THE OLD~! IN WITH THE NEW~!
Paste this command to copy and move the new install.wim and force replace the original install file:
copy-item "C:\DW7\ISO\install.wim" C:\DW7\DVD\sources -Recurse -Force
Paste this command to remove the "new" install.wim, that we moved above to the dvd sources folder:
remove-item "C:\DW7\ISO\install.wim"
Spoiler: PREPARING THE PATH ENVIRONMENT
At this point we need to make a copy of our DW7 Folder..
Paste The DW7 Folder to your Desktop.
Do not Cut or Drag and Drop!
This will leave you clean backups in C:\, just in case~!
This also forces us to make a change in the code...
Spoiler: LEARN DEM HOTKEYS~! PLEASE~!
You will need to Edit the Username in the code below.
If you are unsure of your Username,
Go into C:\Users and click on your Username.
Press F2 (This is the "rename" shortcut),
Which Highlights the text of any file or folder saving time..
Press Ctrl+C to quickly copy your username.
Then replace my commands below, the part after...
C:\Users\paste your user name and erase mine, the 0110 part...
To do this quickly, press Ctrl+H, type 0110 in the first line..
Press Ctrl+V to Paste your username, and replace all..
Spoiler: MOUNTING THE IMAGE
DESKTOP COMMAND:
dism.exe /mount-wim /wimfile:"C:\Users\0110\Desktop\DW7\DVD\sources\install.wim" /mountdir:"C:\Users\0110\Desktop\DW7\PATH" /index:1
DESKTOP COMMAND:
takeown /a /r /d Y /f "C:\Users\0110\Desktop\DW7\PATH"
Spoiler: ENABLING AND REMOVING FEATURES
Paste this command to Enable Windows features, currently disabled on the ISO:
Get-WindowsOptionalFeature -Path "C:\DW7\PATH" | Where-Object {$_.State –eq “Disabled”} | Out-GridView -PassThru | Enable-WindowsOptionalFeature
Paste this command to Disable Windows features, currently enabled on the ISO:
Get-WindowsOptionalFeature -Path "C:\DW7\PATH" | Where-Object {$_.State –eq “Enabled”} | Out-GridView -PassThru | Disable-WindowsOptionalFeature
Add or Remove Features by holding the control key and click on
all the features you want to include, then hit ok.
Spoiler: SAVE AND EXIT
Save your changes by pasting this command:
Dismount-WindowsImage -Path "C:\Users\0110\Desktop\DW7\PATH\" -Save
NOTE THAT UNTIL YOU DO THIS STEP, TRUSTED INSTALLER WILL NOT ALLOW YOU...
TO DELETE THE DW7 FOLDER OR FILES WITHIN~!
Spoiler: REFERENCES
How to Remove Built-in Apps, Features & Editions from a Windows 10 Install Image (WIM file)? | Windows OS Hub
In this guide we’ll show how to remove Microsoft Store provisioned apps, features (capabilities), and unused Windows editions from a Windows 10 installation image (install.wim file). Let’s do it manually…
woshub.com
Take ownership and delete a folder with Windows PowerShell
Windows won’t let me delete this folder…
mattyclutch.wordpress.com
TAKEOWN Command: Takes Ownership of A File
The TAKEOWN command is used to take ownership of a file. This command is used on the batch files.
windowscmd.com
takeown
Reference article for the takeown command, which enables an administrator to recover access to a file that was previously denied.
docs.microsoft.com
How to Add or Remove Optional Features on Windows Install Media
Ten Forums own tutorial guru @Brink has written an excellent tutorial about how to turn Windows optional features on or off in online OS, the current Windows installation user has signed in. This tutorial shows how to do the same on an offline image, a Wi
www.tenforums.com
Spoiler: Scripts from the articles to run on live machines
Remove Windows Apps:
Get-AppxProvisionedPackage -Online | Out-GridView -PassThru -Title 'Select All Windows Apps to Remove' | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue -Verbose
Remove System Apps:
Get-AppxPackage -AllUsers | Out-GridView -PassThru -Title 'Select All System Apps to Remove' | Remove-AppxPackage -Confirm:$false -ErrorAction SilentlyContinue -Verbose
Remove Windows Capabilities:
Get-WindowsCapability -Online | Where-Object {$_.State -eq 'Installed' } | Out-GridView -PassThru -Title 'Select Windows Capabilities to Remove' | Remove-WindowsCapability -Online -Verbose
Remove Windows Packages:
Get-WindowsPackage -Online | Where-Object {$_.PackageState -eq 'Installed' } | Out-GridView -PassThru -Title 'Select Windows Packages to Remove' | Remove-WindowsPackage -Online -Verbose
=========================================================================
TODAY'S PRESENTATION IS BROUGHT TO YOU BY:
THE LETTER D... FOR DISM...
DEPLOYMENT IMAGE SERVICING AND MANAGEMENT TOOL~!
===========================================================================
TO GET HELP IN SHELL...
PASTE: DISM /?
Spoiler: DISM COMMANDS
Deployment Image Servicing and Management tool
Version: 10.0.19041.844
DISM.exe [dism_options] {Imaging_command} [<Imaging_arguments>]
DISM.exe {/Image:<path_to_offline_image> | /Online} [dism_options]
{servicing_command} [<servicing_arguments>]
DESCRIPTION:
DISM enumerates, installs, uninstalls, configures, and updates features
and packages in Windows images. The commands that are available depend
on the image being serviced and whether the image is offline or running.
GENERIC IMAGING COMMANDS:
/Split-Image - Splits an existing .wim file into multiple
read-only split WIM (SWM) files.
/Apply-Image - Applies an image.
/Get-MountedImageInfo - Displays information about mounted WIM and VHD
images.
/Get-ImageInfo - Displays information about images in a WIM, a VHD
or a FFU file.
/Commit-Image - Saves changes to a mounted WIM or VHD image.
/Unmount-Image - Unmounts a mounted WIM or VHD image.
/Mount-Image - Mounts an image from a WIM or VHD file.
/Remount-Image - Recovers an orphaned image mount directory.
/Cleanup-Mountpoints - Deletes resources associated with corrupted
mounted images.
WIM COMMANDS:
/Apply-CustomDataImage - Dehydrates files contained in the custom data image.
/Capture-CustomImage - Captures customizations into a delta WIM file on a
WIMBoot system. Captured directories include all
subfolders and data.
/Get-WIMBootEntry - Displays WIMBoot configuration entries for the
specified disk volume.
/Update-WIMBootEntry - Updates WIMBoot configuration entry for the
specified disk volume.
/List-Image - Displays a list of the files and folders in a
specified image.
/Delete-Image - Deletes the specified volume image from a WIM file
that has multiple volume images.
/Export-Image - Exports a copy of the specified image to another
file.
/Append-Image - Adds another image to a WIM file.
/Capture-Image - Captures an image of a drive into a new WIM file.
Captured directories include all subfolders and
data.
/Get-MountedWimInfo - Displays information about mounted WIM images.
/Get-WimInfo - Displays information about images in a WIM file.
/Commit-Wim - Saves changes to a mounted WIM image.
/Unmount-Wim - Unmounts a mounted WIM image.
/Mount-Wim - Mounts an image from a WIM file.
/Remount-Wim - Recovers an orphaned WIM mount directory.
/Cleanup-Wim - Deletes resources associated with mounted WIM
images that are corrupted.
FFU COMMANDS:
/Capture-Ffu - Captures a physical disk image into a new FFU file.
/Apply-Ffu - Applies an .ffu image.
/Split-Ffu - Splits an existing .ffu file into multiple read-only
split FFU files.
/Optimize-Ffu - Optimizes a FFU file so that it can be applied to storage
of a different size.
IMAGE SPECIFICATIONS:
/Online - Targets the running operating system.
/Image - Specifies the path to the root directory of an
offline Windows image.
DISM OPTIONS:
/English - Displays command line output in English.
/Format - Specifies the report output format.
/WinDir - Specifies the path to the Windows directory.
/SysDriveDir - Specifies the path to the system-loader file named
BootMgr.
/LogPath - Specifies the logfile path.
/LogLevel - Specifies the output level shown in the log (1-4).
/NoRestart - Suppresses automatic reboots and reboot prompts.
/Quiet - Suppresses all output except for error messages.
/ScratchDir - Specifies the path to a scratch directory.
For more information about these DISM options and their arguments, specify an
option immediately before /?.
Examples:
DISM.exe /Mount-Wim /?
DISM.exe /ScratchDir /?
DISM.exe /Image:C:\test\offline /?
DISM.exe /Online /?
PS C:\> Get-WindowsCapability -Path C:\DW7\PATH
Get-WindowsCapability : Get-WindowsCapability failed. Error code = 0x80004002
At line:1 char:1
+ Get-WindowsCapability -Path C:\DW7\PATH
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ) [Get-WindowsCapability], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.GetWindowsCapabilityCommand
PS C:\> Get-WindowsCapability -Path " C:\DW7\PATH"
Get-WindowsCapability : The parameter is incorrect.
At line:1 char:1
+ Get-WindowsCapability -Path " C:\DW7\PATH"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ) [Get-WindowsCapability], PSArgumentException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.GetWindowsCapabilityCommand
Upload has completed, download links are now available.
A video guide has been provided.
We are missing one or so lines of code to rebuild the ISO.
I will correct that tomorrow, I'm Sleepy. D;
You can always use MSMGTK to do that part if you make it there before I add the code~!
Apparently I have to learn Ms build which I'm doing now so obviously this will take a little longer than I expected but it will help to progress our knowledge gained from trying to do something that should be so simple, turn a folder into an ISO, but continues to prove to us that nothing in computing should ever be took lightly and it took a lot of time and tools and engineering to create everything we do on them...
I am putting out a correction~! MSBUILD is NOT needed to turn a folder into an ISO. We can do that entirely in Powershell, using the built in ISE Tool. This will allow us to create a script that will burn the ISO for us. I will release a new thread on building a script in PowerShell ISE when I know what the heck I am doing. LOL
I did however, extract the MSBUILD tool from Visual Studio if anyone ever needs it and doesn't want to install VS
MSBuild.zip
drive.google.com
(22.5 MB ZIPPED)
I am also dumping all my research on MSBUILD here in case I or anyone else want's to pickup on it later~!
REFS:
Spoiler: MSBUILD ENGINE
MSBuild - MSBuild
Learn about how the Microsoft Build Engine (MSBuild) platform provides a project file with an XML schema to control builds.
docs.microsoft.com
"The Microsoft Build Engine is a platform for building applications. This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software"
"To run MSBuild at a command prompt, pass a project file to MSBuild.exe, together with the appropriate command-line options. Command-line options let you set properties, execute specific targets, and set other options that control the build process."
COMMAND LINE EXAMPLE:
MSBuild.exe MyProj.proj -property:Configuration=Debug
"MSBuild uses an XML-based project file format that's straightforward and extensible. The MSBuild project file format lets developers describe the items that are to be built, and also how they are to be built for different operating systems and configurations.
In addition, the project file format lets developers author reusable build rules that can be factored into separate files so that builds can be performed consistently across different projects in the product"
"Properties represent key/value pairs that can be used to configure builds. Properties are declared by creating an element that has the name of the property as a child of a PropertyGroup element"
XML EXAMPLE:
<PropertyGroup>
<BuildDir>Build</BuildDir>
</PropertyGroup>
"You can define a property conditionally by placing a Condition attribute in the element. The contents of conditional elements are ignored unless the condition evaluates to true"
XML EXAMPLE:
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
"Properties can be referenced throughout the project file by using the syntax $(<PropertyName>).
For example, you can reference the properties in the previous examples by using $(BuildDir) and $(Configuration)."
"Items are inputs into the build system and typically represent files. Items are grouped into item types based on user-defined item names. These item types can be used as parameters for tasks, which use the individual items to perform the steps of the build process. Items are declared in the project file by creating an element that has the name of the item type as a child of an ItemGroup element."
XML EXAMPLE:
<ItemGroup>
<Compile Include = "file1.cs"/>
<Compile Include = "file2.cs"/>
</ItemGroup>
"Item types can be referenced throughout the project file by using the syntax @(<ItemType>).
For example, the item type in the example would be referenced by using @(Compile).
In MSBuild, element and attribute names are case-sensitive. However, property, item, and metadata names are not."
"Tasks are units of executable code that MSBuild projects use to perform build operations.
For example, a task might compile input files or run an external tool."
"The execution logic of a task is written in managed code and mapped to MSBuild by using the UsingTask element.
You can write your own task by authoring a managed type that implements the ITask interface"
"MSBuild includes common tasks that you can modify to suit your requirements.
Examples are Copy, which copies files, MakeDir, which creates directories"
"A task is executed in an MSBuild project file by creating an element that has the name of the task as a child of a Target element.
Tasks typically accept parameters, which are passed as attributes of the element. Both MSBuild properties and items can be used as parameters."
XML EXAMPLE:
<Target Name="MakeBuildDirectory">
<MakeDir Directories="$(BuildDir)" />
</Target>
"Targets group tasks together in a particular order and expose sections of the project file as entry points into the build process."
"Breaking the build steps into targets lets you call one piece of the build process from other targets without copying that section of code into every target"
XML EXAMPLE:
<Target Name="Compile">
<Csc Sources="@(Compile)" />
</Target>
Spoiler: WHAT IS XML SCHEMA?
What is XML Schema (XSD)?
docs.microsoft.com
"XML Schema Definition (XSD) language is the current standard schema language for all XML documents and data. On May 2, 2001, the World Wide Web Consortium (W3C) published XSD in its version 1.0 format.
The XML Schema definition language (XSD) enables you to define the structure and data types for XML documents.
An XML Schema defines the elements, attributes, and data types that conform to the World Wide Web Consortium (W3C),
XML Schema Part 1: Structures Recommendation for the XML Schema Definition Language."
"The schema element contains type definitions (simpleType and complexType elements) and attribute and element declarations. In addition to its built-in data types (such as integer, string, and so on), XML Schema also allows for the definition of new data types using the simpleType and complexType elements.
simpleType
A type definition for a value that can be used as the content (textOnly) of an element or attribute. This data type cannot contain elements or have attributes.
complexType
A type definition for elements that can contain attributes and elements. This data type can contain elements and have attributes."
Spoiler: MSBUILD ON THE COMMAND LINE
MSBuild on the command line - C++
Learn more about: MSBuild on the command line - C++
docs.microsoft.com
"you can use the MSBuild tool directly from the command prompt. The build process is controlled by the information in a project file (.vcxproj) that you can create and edit."
CLI EXAMPLE:
msbuild.exe [ project_file ] [ options ]
"Use the /target (or /t) and /property (or /p) command-line options to override specific properties and targets that are specified in the project file."
"A project file can specify one or more targets, which can include a default target."
"Each target consists of a sequence of one or more tasks. Each task is represented by a .NET Framework class that contains one executable command. For example, the CL task contains the cl.exe command."
"A task parameter is a property of the class task and typically represents a command-line option of the executable command."
Spoiler: MSBUILD COMMAND LINE REFERENCES
MSBuild Command-Line Reference - MSBuild
Learn how to use MSBuild.exe command line to build a project or solution file, and several switches you can include.
docs.microsoft.com
"When you use MSBuild.exe to build a project or solution file, you can include several switches to specify various aspects of the process."
"Every switch is available in two forms: -switch and /switch."
"Switches are not case-sensitive. If you run MSBuild from a shell other than the Windows command prompt, lists of arguments to a switch (separated by semicolons or commas) might need single or double quotes to ensure that lists are passed to MSBuild instead of interpreted by the shell."
SYNTAX:
MSBuild.exe [Switches] [ProjectFile]
ARGUMENT:
ProjectFile Builds the targets in the project file that you specify. If you don't specify a project file,
MSBuild searches the current working directory for a file name extension that ends in proj and uses that file.
USE THIS ARTICLE AFTER READING THE ABOVE AND YOU WILL UNDERSTAND WHAT IT'S SAYING.
Use MSBuild - MSBuild
Learn the various parts of an MSBuild project file, including items, item metadata, properties, targets, and tasks.
docs.microsoft.com
To get help in the Shell, Type:
MSBuild -help
Spoiler: DISPLAYS THIS
C:\Users\0110\Desktop\MSBuild\Current\Bin>msbuild -help
Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Syntax: MSBuild.exe [options] [project file | directory]
Description: Builds the specified targets in the project file. If a project file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in "proj" and uses that file. If a directory is specified, MSBuild searches that directory for a project file.
Switches: Note that you can specify switches using:
"-switch", "/switch" and "--switch".
-target:<targets> Build these targets in this project. Use a semicolon or a comma to separate multiple targets, or specify each target separately. (Short form: -t)
Example:
-target:Resources;Compile
-property:<n>=<v> Set or override these project-level properties. <n> is the property name, and <v> is the property value. Use a semicolon or a comma to separate multiple properties, or specify each property separately.
(Short form: -p)
Example:
-property:WarningLevel=2;OutDir=bin\Debug\
-maxCpuCount[:n] Specifies the maximum number of concurrent processes to build with. If the switch is not used, the default value used is 1. If the switch is used without a value MSBuild will use up to the number of processors on the computer. (Short form: -m[:n])
-toolsVersion:<version> The version of the MSBuild Toolset (tasks, targets, etc.) to use during build. This version will override the versions specified by individual projects.
(Short form: -tv)
Example:
-toolsVersion:3.5
-verbosity:<level> Display this amount of information in the event log.
The available verbosity levels are: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].
(Short form: -v)
Example:
-verbosity:quiet
-consoleLoggerParameters:<parameters> Parameters to console logger.
(Short form: -clp)
The available parameters are:
PerformanceSummary--Show time spent in tasks, targets and projects.
Summary--Show error and warning summary at the end.
NoSummary--Don't show error and warning summary at the end.
ErrorsOnly--Show only errors.
WarningsOnly--Show only warnings.
NoItemAndPropertyList--Don't show list of items and properties at the start of each project build.
ShowCommandLine--Show TaskCommandLineEvent messages
ShowTimestamp--Display the Timestamp as a prefix to any message.
ShowEventId--Show eventId for started events, finished events, and messages
ForceNoAlign--Does not align the text to the size of the console buffer
DisableConsoleColor--Use the default console colors for all logging messages.
DisableMPLogging-- Disable the multiprocessor logging style of output when running in non-multiprocessor mode.
EnableMPLogging--Enable the multiprocessor logging style even when running in non-multiprocessor mode. This logging style is on by default.
ForceConsoleColor--Use ANSI console colors even if console does not support it
Verbosity--overrides the -verbosity setting for this logger.
Example:
-consoleLoggerParameterserformanceSummary;NoSummary;
Verbosity=minimal
-noConsoleLogger Disable the default console logger and do not log events to the console. (Short form: -noConLog)
-fileLogger[n] Logs the build output to a file. By default the file is in the current directory and named
"msbuild[n].log". Events from all nodes are combined into a single log. The location of the file and other parameters for the fileLogger can be specified through the addition of the "-fileLoggerParameters[n]" switch. "n" if present can be a digit from 1-9, allowing up to 10 file loggers to be attached.
(Short form: -fl[n])
-fileLoggerParameters[n]:<parameters> Provides any extra parameters for file loggers. The presence of this switch implies the corresponding -fileLogger[n] switch.
"n" if present can be a digit from 1-9.
-fileLoggerParameters is also used by any distributed file logger, see description of -distributedFileLogger.
(Short form: -flp[n])
The same parameters listed for the console logger are available. Some additional available parameters are:
LogFile--path to the log file into which the build log will be written.
Append--determines if the build log will be appended to or overwrite the log file. Setting the switch appends the build log to the log file;
Not setting the switch overwrites the contents of an existing log file. The default is not to append to the log file.
Encoding--specifies the encoding for the file, for example, UTF-8, Unicode, or ASCII Default verbosity is Detailed.
Examples:
-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8
-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum
-flp1:warningsonly;logfile=msbuild.wrn
-flp2:errorsonly;logfile=msbuild.err
-distributedLogger:<central logger>*<forwarding logger>
Use this logger to log events from MSBuild, attaching a different logger instance to each node. To specify multiple loggers, specify each logger separately.
(Short form -dl)
The <logger> syntax is:
[<class>,]<assembly>[,<options>][;<parameters>]
The <logger class> syntax is:
[<partial or full namespace>.]<logger class name>
The <logger assembly> syntax is:
{<assembly name>[,<strong name>] | <assembly file>}
Logger options specify how MSBuild creates the logger. The <logger parameters> are optional, and are passed to the logger exactly as you typed them.
(Short form: -l)
Examples:
-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-distributedFileLogger
Logs the build output to multiple log files, one log file per MSBuild node. The initial location for these files is the current directory. By default the files are called "MSBuild<nodeid>.log". The location of the files and other parameters for the fileLogger can be specified with the addition of the "-fileLoggerParameters" switch.
If a log file name is set through the fileLoggerParameters switch the distributed logger will use the fileName as a template and append the node id to this fileName to create a log file for each node.
-logger:<logger> Use this logger to log events from MSBuild. To specify multiple loggers, specify each logger separately.
The <logger> syntax is:
[<class>,]<assembly>[,<options>][;<parameters>]
The <logger class> syntax is:
[<partial or full namespace>.]<logger class name>
The <logger assembly> syntax is:
{<assembly name>[,<strong name>] | <assembly file>}
Logger options specify how MSBuild creates the logger.
The <logger parameters> are optional, and are passed to the logger exactly as you typed them.
(Short form: -l)
Examples:
-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-binaryLogger[:[LogFile=]output.binlog[;ProjectImports={None,Embed,ZipFile}]]
Serializes all build events to a compressed binary file.
By default the file is in the current directory and named "msbuild.binlog". The binary log is a detailed description of the build process that can later be used to reconstruct text logs and used by other analysis tools. A binary log is usually 10-20x smaller than the most detailed text diagnostic-level log, but it contains more information.
(Short form: -bl)
The binary logger by default collects the source text of project files, including all imported projects and target files encountered during the build. The optional ProjectImports switch controls this behavior:
ProjectImports=None - Don't collect the project imports.
ProjectImports=Embed - Embed project imports in the log file.
ProjectImports=ZipFile - Save project files to output.projectimports.zip where output is the same name as the binary log file name.
The default setting for ProjectImports is Embed. Note: the logger does not collect non-MSBuild source files such as .cs, .cpp etc.
A .binlog file can be "played back" by passing it to msbuild.exe as an argument instead of a project/solution. Other loggers will receive the information contained in the log file as if the original build was happening.
You can read more about the binary log and its usages at:
msbuild/Providing-Binary-Logs.md at main · dotnet/msbuild
The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio. - msbuild/Providing-Binary-Logs.md at main · dotnet/msbuild
aka.ms
Examples:
-bl
-blutput.binlog
-blutput.binlog;ProjectImports=None
-blutput.binlog;ProjectImports=ZipFile
-bl:..\..\custom.binlog
-binaryLogger
-warnAsError[:code[;code2]]
List of warning codes to treats as errors. Use a semicolon or a comma to separate multiple warning codes. To treat all warnings as errors use the switch with no values.
(Short form: -err[:c;[c2]])
Example:
-warnAsError:MSB4130
When a warning is treated as an error the target will continue to execute as if it was a warning but the overall build will fail.
-warnAsMessage[:code[;code2]]
List of warning codes to treats as low importance messages. Use a semicolon or a comma to separate multiple warning codes.
(Short form: -noWarn[:c;[c2]])
Example:
-warnAsMessage:MSB3026
-validate Validate the project against the default schema. (Short form: -val)
-validate:<schema> Validate the project against the specified schema. (Short form: -val)
Example:
-validate:MyExtendedBuildSchema.xsd
-ignoreProjectExtensions:<extensions>
List of extensions to ignore when determining which project file to build. Use a semicolon or a comma to separate multiple extensions.
(Short form: -ignore)
Example:
-ignoreProjectExtensions:.sln
-nodeReuse:<parameters>
Enables or Disables the reuse of MSBuild nodes.
The parameters are:
True --Nodes will remain after the build completes and will be reused by subsequent builds (default)
False--Nodes will not remain after the build completes
(Short form: -nr)
Example:
-nr:true
-preprocess[:file]
Creates a single, aggregated project file by inlining all the files that would be imported during a build, with their boundaries marked. This can be
useful for figuring out what files are being imported and from where, and what they will contribute to the build. By default the output is written to the console window. If the path to an output file is provided that will be used instead.
(Short form: -pp)
Example:
-pput.txt
-targets[:file]
Prints a list of available targets without executing the actual build process. By default the output is written to the console window. If the path to an output file is provided that will be used instead.
(Short form: -ts)
Example:
-tsut.txt
-detailedSummary[:True|False]
Shows detailed information at the end of the build about the configurations built and how they were scheduled to nodes.
(Short form: -ds)
-restore[:True|False]
Runs a target named Restore prior to building other targets and ensures the build for these targets uses the latest restored build logic.
This is useful when your project tree requires packages to be restored before it can be built.
Specifying -restore is the same as specifying
-restore:True. Use the parameter to override a value that comes from a response file.
(Short form: -r)
-restoreProperty:<n>=<v>
Set or override these project-level properties only during restore and do not use properties specified with the -property argument. <n> is the property name, and <v> is the property value. Use a semicolon or a comma to separate multiple properties, or specify each property separately.
(Short form: -rp)
Example:
-restoreProperty:IsRestore=true;MyProperty=value
-profileEvaluation:<file>
Profiles MSBuild evaluation and writes the result to the specified file. If the extension of the specified file is '.md', the result is generated in markdown format. Otherwise, a tab separated file is produced.
-interactive[:True|False]
Indicates that actions in the build are allowed to interact with the user. Do not use this argument in an automated scenario where interactivity is not expected.
Specifying -interactive is the same as specifying
-interactive:true. Use the parameter to override a value that comes from a response file.
-isolateProjects[:True|False]
Causes MSBuild to build each project in isolation. This is a more restrictive mode of MSBuild as it requires that the project graph be statically discoverable at evaluation time, but can improve scheduling and reduce memory overhead when building a large set of projects.
(Short form: -isolate)
This flag is experimental and may not work as intended.
-inputResultsCaches:<cacheFile>...
Semicolon separated list of input cache files that MSBuild will read build results from. Setting this also turns on isolated builds (-isolate).
(short form: -irc)
-outputResultsCache:[cacheFile]
Output cache file where MSBuild will write the contents of its build result caches at the end of the build. Setting this also turns on isolated builds (-isolate).
(short form: -orc)
-graphBuild[:True|False]
Causes MSBuild to construct and build a project graph.
Constructing a graph involves identifying project references to form dependencies. Building that graph involves attempting to build project references prior to the projects that reference them, differing from traditional MSBuild scheduling.
(Short form: -graph)
This flag is experimental and may not work as intended.
-lowPriority[:True|False]
Causes MSBuild to run at low process priority. Specifying -lowPriority is the same as specifying -lowPriority:True.
(Short form: -low)
@<file> Insert command-line settings from a text file. To specify multiple response files, specify each response file separately.
Any response files named "msbuild.rsp" are automatically consumed from the following locations:
(1) the directory of msbuild.exe
(2) the directory of the first project or solution built
-noAutoResponse Do not auto-include any MSBuild.rsp files.
(Short form:-noAutoRsp)
-noLogo Do not display the startup banner and copyright message.
-version Display version information only. (Short form: -ver)
-help Display this usage message. (Short form: -? or -h)
Examples:
MSBuild MyApp.sln -t:Rebuild -p:Configuration=Release
MSBuild MyApp.csproj -t:Clean
-p:Configuration=Debug;TargetFrameworkVersion=v3.5
For more detailed information, see https://aka.ms/msbuild/docs
C:\Users\0110\Desktop\MSBuild\Current\Bin>
Update 21-02-2022
----------------------------
Hi!
Great Job!
I done it for Windows 11 with a few changes, and windows 11 have install.esd not install.wim!
This was not my idea! It belongs to @jenneh, i only had done trough batch files.
You need to create this 5 batch files bellow:
* Need Notepad++ to be easy to read files.
* Use MediaCreationToolW11.exe and download ISO image or create a Pendrive with system.
* Extract from ISO or Pendrive all in to a work folder on descktop
* Create and copy the first 4 batch files in to inside the work folder.
* All 5 batch will request administrator permissions.
* At end delete/cut what ever the batch files from the work folder
*The 5 batch files is executed in to desktop and read what batch window says!
* Done!
This are the 5 batch files:
First one it show the images inside and the option the select and work on one.
Spoiler: 1-Preparing_and_extracting_img.bat
Code:
@echo off & @echo.
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
@echo. & @echo [43m[31mRequesting administrative privileges...[0m
goto UACPrompt
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
rem :To CD to the location of the batch script file (%0)
CD /d "%~dp0"
mkdir %~dp0ISO
powershell.exe Dism /Get-WimInfo /WimFile:"%~dp0sources\install.esd"
@echo. & set /p index=" Type Image Index number to extract image: "
powershell.exe Dism /export-image /SourceImageFile:"%~dp0sources\install.esd" /SourceIndex:%index% /DestinationImageFile:"%~dp0ISO\install.esd" /Compress:max /CheckIntegrity
pause
Spoiler: 2-Mount_Windows_image.bat
Code:
@echo off & @echo.
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
@echo. & @echo [43m[31mRequesting administrative privileges...[0m
goto UACPrompt
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
rem :To CD to the location of the batch script file (%0)
CD /d "%~dp0"
del /F /S /Q "%~dp0sources\install.esd"
move /y "%~dp0ISO\install.esd" "%~dp0sources\install.esd"
mkdir "%~dp0PATH"
dism.exe /mount-wim /wimfile:"%~dp0sources\install.esd" /mountdir:"%~dp0PATH" /index:1
pause
This one create a file where you can check the Optional Features windows state then use batch to enable or disable, batch it will refresh the file with new state, just reload the file. But some of them aren't possible to change state, it gives error.
Spoiler: 3-Enable_Disable_options.bat
Code:
@echo off & @echo.
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
@echo. & @echo [43m[31mRequesting administrative privileges...[0m
goto UACPrompt
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
rem :To CD to the location of the batch script file (%0)
CD /d "%~dp0"
:start
cls
@echo. & @echo Open WindowsOptionalFeature.txt to check Optional Feature state & @echo.
Timeout /t 3 >nul
powershell.exe Get-WindowsOptionalFeature -Path "%~dp0PATH" > WindowsOptionalFeature.txt
set /p Feature=" Optional Feature name:-"
set /p state=" Enable or disable ? -"
powershell.exe %state%-WindowsOptionalFeature -Path "%~dp0PATH" -FeatureName "%Feature%"
@echo. & @echo Press any key to continue. & pause >nul
goto start
This one Will Install apps from Windows app Store in Windows Offline image.
Spoiler: 3.1-Add_Apps_to_Offline_Windows_Image.bat
Code:
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
@echo. & @echo [43m[31mRequesting administrative privileges...[0m
goto UACPrompt
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
rem :To CD to the location of the batch script file (%0)
CD /d "%~dp0"
@echo. & @echo [43m[31mAdd apps to offline Windows image. [4m[1mImage must be mounted![0m
@echo. & @echo [41mOpenning Windows App Store...[0m & @echo Press any key to coninue... & pause >nul
start "windows_app_store" https://www.microsoft.com/pt-pt/store/apps/windows
@echo. & @echo [1mFind your app and copy link.[0m
@echo. & @echo [41mOppening https://store.rg-adguard.net/ to [1m[4mget app link to download without install it.[0m & @echo Press any key to coninue... & pause >nul
start "store_rg-adguard.net/" https://store.rg-adguard.net/
@echo. & @echo [1m[31 PPaste the link you copy from App Store in store.rg-adguard.net link bar, select Retail and search links.[0m
@echo. & @echo [1mDownload to desktop [1m[4m[31mthe right [103mappx or appxbundle[0m [31mversion that match your windows version[0m, example for Windows 64 bits download x64 [31m[103mappx or appxbundle[0m version.
@echo [33m Note: * If download doesn t show the extencion just paste the name, to check extencion do right click and check app propertys.
@echo * Some apps have more than 1 package, The app package and its dependencies like Frameworks or VClibs as example.[0m
rem Lets start to add...
@echo.
@echo [44mAdding the Apps...[0m
:repeat
@echo. [33m
set /p app=" Type/Paste the downloaded app name and extension here and press ENTER: "
@echo.
Dism /Image:%~dp0PATH /Add-ProvisionedAppxPackage /PackagePath:%userprofile%\Desktop\%app% /SkipLicense /Region:"all"
@echo. [0m & @echo Press any key to add more apps!
pause >nul
goto repeat
This one dismount and do the clean
Spoiler: 4-Dismount_Windows_Image.bat
Code:
@echo off & @echo.
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
@echo. & @echo [43m[31mRequesting administrative privileges...[0m
goto UACPrompt
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
rem :To CD to the location of the batch script file (%0)
CD /d "%~dp0"
powershell Dismount-WindowsImage -Path "%~dp0PATH" -Save
RD /S /Q p0ISO >NUL
RD /S /Q p0PATH >NUL
del /F /S /Q WindowsOptionalFeature.txt >NUL
pause
This one and the last one create a ISO image from Your Windows modded image but first you need to Install Windows_Kits10ADK.
Download this tool, extract and execute: adksetup.zip
After you execute it, in selection window of tools, only select Deployment Tools like image bellow and install:
Spoiler: Selection Window from Windows Assessement and Deployment Kit
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
After installation is easy, After cleanning your Windows Work folder execute this bat bellow in YOUR DESKTOP, reade what is writted in there to execute it right!!!
Spoiler: 5-Build_ISO.bat
Code:
@echo off & @echo.
CD /d "%~dp0"
@echo Copy this line bellow, paste in command and replace YOURWORKFOLDERNAME with the name of Your Windows work folder name, where you had done the all Job!
@echo YOURWORKFOLDERNAME must NOT have spaces between or will FAIL, Example: Wind 11 is wrong!!! Wind11 or Wind_11 is OK!!!& @echo.
@echo oscdimg.exe -m -o -u2 -udfver102 -bootdata:2#p0,e,b%~dp0YOURWORKFOLDERNAME\boot\etfsboot.com#pEF,e,b%~dp0YOURWORKFOLDERNAME\efi\microsoft\boot\efisys.bin %~dp0YOURWORKFOLDERNAME %userprofile%\Desktop\WinImage.iso
@echo.
%systemroot%\system32\cmd.exe /k "%systemdrive%\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"
Is Done!!! Your Image is ready!
THE END!
Tell me if worked for you to!
persona78 said:
Hi!
Great Job!
I done it for Windows 11 with a few changes, and windows 11 have install.esd not install.wim!
I use batch to do all job like this:
* Need Notepad++ to be easy to read files.
* Use MediaCreationToolW11.exe and download ISO image or create a Pendrive with system.
* Extract from ISO or Pendrive all in to a work folder on descktop
* Copy the batch files in to inside the work folder.
* All batch need to be executed as administrator.
* At end delete/cut what ever the batch files from the work folder
* Done!
I create 4 batch files:
First one it show the images inside and the option the select and work on one.
Spoiler: 1-Preparing_and_extracting_img.bat
Code:
@echo off & @echo.
CD /d "%~dp0"
mkdir %~dp0ISO
powershell.exe Dism /Get-WimInfo /WimFile:"%~dp0sources\install.esd"
@echo. & set /p index=" Type Image Index number to extract image: "
powershell.exe Dism /export-image /SourceImageFile:"%~dp0sources\install.esd" /SourceIndex:%index% /DestinationImageFile:"%~dp0ISO\install.esd" /Compress:max /CheckIntegrity
pause
Spoiler: 2-Mount_Windows_image.bat
Code:
@echo off & @echo.
CD /d "%~dp0"
del /F /S /Q "%~dp0sources\install.esd"
move /y "%~dp0ISO\install.esd" "%~dp0sources\install.esd"
mkdir "%~dp0PATH"
dism.exe /mount-wim /wimfile:"%~dp0sources\install.esd" /mountdir:"%~dp0PATH" /index:1
pause
This one create a file where you can check the Optional Features windows state then use batch to enable or disable, batch it will refresh the file with new state, just reload the file. But some of them aren't possible to change state, it gives error.
Spoiler: 3-Enable_Disable_options.bat
Code:
@echo off & @echo.
CD /d "%~dp0"
:start
cls
@echo. & @echo Open WindowsOptionalFeature.txt to check Optional Feature state & @echo.
Timeout /t 3 >nul
powershell.exe Get-WindowsOptionalFeature -Path "%~dp0PATH" > WindowsOptionalFeature.txt
set /p Feature=" Optional Feature name:-"
set /p state=" Enable or disable ? -"
powershell.exe %state%-WindowsOptionalFeature -Path "%~dp0PATH" -FeatureName "%Feature%"
@echo. & @echo Press any key to continue. & pause >nul
goto start
The last one dismount and do the clean
Spoiler: 4-Dismount_Windows_Image.bat
Code:
@echo off & @echo.
CD /d "%~dp0"
powershell Dismount-WindowsImage -Path "%~dp0PATH" -Save
RD /S /Q %~dp0ISO >NUL
RD /S /Q %~dp0PATH >NUL
del /F /S /Q %~dpWindowsOptionalFeature.txt >NUL
pause
Tell me if worked for you to!
Click to expand...
Click to collapse
I really really Thank You for Sharing your work with Us. You have no idea how happy this makes me. Outstanding~! Great Work, Persona!
@jenneh i update my post: https://forum.xda-developers.com/t/...-to-modify-windows-isos.4398285/post-86458077
I had how to do ISO image!
persona78 said:
@jenneh i update my post: https://forum.xda-developers.com/t/...-to-modify-windows-isos.4398285/post-86458077
I had how to do ISO image!
Click to expand...
Click to collapse
You are seriously a Rockstar~! I appreciate so Much Your Time~! This has saved me countless hours in research :>
Hi!
@jenneh im woking in a way to add the apps from windows app store to the offline windows imge that we are working on.
It use DISM tool to and it will request administrator rights at starts, dont need to execute as administrator.
I already have a batch, only need to test it!
Hi!
@jenneh i update the my post! I made possible to add app in to Offline Windows image!
i update all batch. They will auto request administrator permission to start!
Check 3.1.
persona78 said:
Hi!
@jenneh i update the my post! I made possible to add app in to Offline Windows image!
i update all batch. They will auto request administrator permission to start!
Check 3.1.
Click to expand...
Click to collapse
I absolutely love these updates! I can't believe how much work you've completed today! I also love the fact that with technology, there is literally No End~! It is the infinite! Haha.
Hi!
@jenneh can you make me a favor?
I dont use VM, im a bit short of storage....
I create this ISO image and want to know how it works. I had apps ( notpad++, 7zip, a theme and a pdf reader, i eneble to HyperV and some other things that i can´t remeber...!
I had done a mod that i read here on XDA and want to know if works to. It supose to install directly on unsuported PC with out any script or regestry change.
System is Windows 11 PRO.
Can you test it???
ESD-ISO_W11_PRO_MOD.iso
Thanks
@persona78 sure thing~! I'm downloading it now. I am at a good point for a break. About to chain all my tools together now that I finally understand what they are all doing x.e
@persona78
Spoiler: ERROR
well idk what this error is but no troubleshooting settings works
actually I just remembered, nox turned off my hypervisor functionality, one sec lemme try turning that back on
jenneh said:
@persona78
Spoiler: ERROR
View attachment 5545611
well idk what this error is but no troubleshooting settings works
Click to expand...
Click to collapse
It can´t read productkey setting...! hmmmm...
i don´t know what can be. Probably that last mod to avoid tmp maybe...
it stoped there???
persona78 said:
It can´t read productkey setting...! hmmmm...
i don´t know what can be. Probably that last mod to avoid tmp maybe...
Click to expand...
Click to collapse
ahhh okay! yeah I had the same error with hypervisor on but I'll try again if you like when it's finished~!
@jenneh it stops there??? Or keep installing?
persona78 said:
@jenneh it stops there??? Or keep installing?
Click to expand...
Click to collapse
oh wait i lied one sec
When i get home i will rebuild again but with out the last mod.
Thanks