By mount everything, do you have ideas in mind? img? vmdk?
For a winpe environement, you may want to check this as well.
Regards,
Erwan
Posted 25 April 2014 - 04:04 PM
By mount everything, do you have ideas in mind? img? vmdk?
For a winpe environement, you may want to check this as well.
Regards,
Erwan
To quickly recap this for you: a frontline problem now is mounting partition (all partitions, physical ones) which has hidden flag under Windows(PE). That's what the issue is now.
We have showdrive but it does not work without WOW64 under 64bit PE. I don't want to alter it
Edited by Gear54rus, 25 April 2014 - 04:05 PM.
Posted 25 April 2014 - 04:09 PM
I dont know the showdrive command (if this part of windows or is it an external tool) but I may be able to add it to vmount.
See below vmount commands :
Posted 25 April 2014 - 04:39 PM
@Gear54rus
What you started as a bold new exploration to new, strange worlds is starting to reveal some underlying lazyness
Winbuilder (the traditional or "classic" one, not the new one) was called in previous incarnation "Openbuilder", but before that, more simply "Batcher", it is nothing but a script processor and if you open a .script in *any* text editor (and replace commas with spaces ) it is hardly of difficult understanding, being very similar to basic or batch, and at it's core, *any* Winbuilder .script taken out of a project does almost exclusively two things:
in other words, it is relatively easy to understand what exactly it does, and particularly someone that wanted to disassemble a 32 bit program, create from the disassembly a valid source then convert this source to 64 bit and then re-compile the tool, it should be easy-peasy.
Some of Wimb's projects (that use NOT Winbuilder) also create PE's and PE's with the WoW64 and our friend erwan.l also uses very simple batches to make his own QuickPE's:
http://reboot.pro/topic/18744-quickpe/
http://reboot.pro/fi...le/340-quickpe/
Now, maybe, and if you are nice enough, erwan.l might consider to create a "Not-So-QuickPE" project including WoW64
(@Wonko, I may have hastily again introduced a confusion between disks/drives/partitions/volumes)
Naah, don't worry.
The fault is entirely to blame on the good MS guys and their confusing naming. (and to the people that perpetuate that )
Still on the several times referred to thread:
http://reboot.pro/to...ssible/?p=88825
the SAME thing can be mounted BOTH as \Device\HarddiskVolumex and as \Device\Harddiskm\Partitionn
an be commonly referred to as \\.\LogicalDrive while the *whatever* is the Harddisk in both the above "Paths" is very often \\.\PhysicalDriven (while still being a disk), we will never have this fully right, the only important thing is that we understand each other.
Wonko
Posted 25 April 2014 - 06:17 PM
To quickly recap this for you: a frontline problem now is mounting partition (all partitions, physical ones) which has hidden flag under Windows(PE). That's what the issue is now.
We have showdrive but it does not work without WOW64 under 64bit PE. I don't want to alter it
Latest vmount (0.3) will list disks or partitions.
Command line :
vmount disks
vmount partitions
Posted 26 April 2014 - 12:57 PM
@Gear54rus
What you started as a bold new exploration to new, strange worlds is starting to reveal some underlying lazyness
![]()
Winbuilder (the traditional or "classic" one, not the new one) was called in previous incarnation "Openbuilder", but before that, more simply "Batcher", it is nothing but a script processor and if you open a .script in *any* text editor (and replace commas with spaces
) it is hardly of difficult understanding, being very similar to basic or batch, and at it's core, *any* Winbuilder .script taken out of a project does almost exclusively two things:
- copy a file from a source to a destination
- change some settings in the destination (be these settings a .ini file, an entry in the Registry or something else)
in other words, it is relatively easy to understand what exactly it does, and particularly someone that wanted to disassemble a 32 bit program, create from the disassembly a valid source then convert this source to 64 bit and then re-compile the tool, it should be easy-peasy.
Some of Wimb's projects (that use NOT Winbuilder) also create PE's and PE's with the WoW64 and our friend erwan.l also uses very simple batches to make his own QuickPE's:
http://reboot.pro/topic/18744-quickpe/
http://reboot.pro/fi...le/340-quickpe/
Now, maybe, and if you are nice enough, erwan.l might consider to create a "Not-So-QuickPE"
project including WoW64
Naah, don't worry.
The fault is entirely to blame on the good MS guys and their confusing naming. (and to the people that perpetuate that
)
Still on the several times referred to thread:
http://reboot.pro/to...ssible/?p=88825
the SAME thing can be mounted BOTH as \Device\HarddiskVolumex and as \Device\Harddiskm\Partitionn
an be commonly referred to as \\.\LogicalDrive while the *whatever* is the Harddisk in both the above "Paths" is very often \\.\PhysicalDriven (while still being a disk), we will never have this fully right, the only important thing is that we understand each other.
Wonko
Well I'm, sorry if I did not meet expectations but I really don't want to re-build everything from scratch for one little detail. It just seems inherently wrong on so many levels. IDK, maybe it's just me .
Appreciate the information.
Latest vmount (0.3) will list disks or partitions.
Command line :
vmount disks
vmount partitions
Thanks again, without you linking this program this would be a nearly complete stall.
Since this program (vmount) does same thing as mnt.exe, I have made a bat script (I recalled again why I love bash so much ) to upgrade it to showdrive.exe (to not require any parameters). Mine will only take 1 parameter - partition number to mount on all drives. It's not pretty but it gets the job done.
So I have a question here: for a tutorial, for 32-bit version PE, I'm gonna advise using showdrive instead of vmount so is there any connection between PE being 32 or 64bit and Windows distributions it installs being 32 or 64 bit.
It seems that there is no connection, so if it's true then is there easy way to determine if WinPE is 32 or 64 bit?
Edited by Gear54rus, 26 April 2014 - 12:58 PM.
Posted 26 April 2014 - 01:01 PM
Checking the registry or the SET comamnd line variable should help you determine if you are on a X86 or X64 platform.
Have a look at PROCESSOR_ARCHITECTURE system variable.
Not that I dont want to push for using vMount but since it works on both platforms (x86/x64), why not use one single batch and vmount for all cases?
Rename the 32bits version vmountx32.exe and the 64bits version vmountx64.exe.
Regards,
Erwan
Posted 26 April 2014 - 03:23 PM
IMHO no real need to rename anything.
I.e. something *like*:
@ECHO OFF SET myexe=vmount64.exe IF %PROCESSOR_ARCHITECTURE%.==x86. SET myexe=vmount.exe
and then use %myexe% in the rest of the batch.
To be strict, it should be a .cmd and not a .bat.
As a side note, the vmount.exe is capable of doing quite a lot of things, maybe it would be useful a "minivmount" with just three options, partitions, mount and umount, though cannot say if it would help to reduce the bloat (though this is not a particular issue in this specific case, it would still be nice to have small tools that do small things).
Quick comparison (32 bit versions):
vmount.exe 439,296 bytes
showdrive.exe 18,432 bytes
mnt.exe+unmount.exe 5,632+8192=13,824
As a side-side note (and you may need to talk with Olof about this) an IMDISK mounted volume is actually seen in vmount partitions as:
\harddisk4294967295\partition4294967295
Wonko
Posted 26 April 2014 - 04:17 PM
Hi Wonko,
Indeed the exe size (but only on x64) is an issue for me for now.
I am using a new delphi version for x64 binaries and the size has massively increased
Any exe with Delphi XE is minimum 2 meg.
For X32 binaries (delphi 7), in console mode, should fit within 400 kb max (and with some little stress, i should be able to divide the size by 2).
Thus it will never beat ASM or C++ binaries...
I'll report the wierd (4294967295=dword ...) partition numbering to Olof.
Although : are you able to use this mount it?
Regards,
Erwan
EDIT : the 4294967295 is my fault... ImDisk seems to not support the IOCTL_STORAGE_GET_DEVICE_NUMBER which makes sense since the ImDisk partition does not have a "parent" harddisk.
EDIT2 : fixed... now vmount will not display \hardiskX\partitionX anymore but will display an empty string.
Posted 26 April 2014 - 04:26 PM
Hello!
Looks like I am at the final stage of creating the script. Thanks for the architecture-detecting snippet - it was adapted (the dot syntax is pretty new to me).
Now the last (seemingly) thing here is that at boot, USB drives need some time to initialize.
At the very first moment when the first line of Winpeshl.ini gets executed - all programs report only internal hard disks. USB drives need some time to initialize.
I am currently looking into a way to lock the script until the initialization happens.
I've tried:
So it seems there is no elegant solution apart from making an endless loop.
That's what I have now:
@ECHO OFF set partition=2 SET mnt=vmount64.exe IF %PROCESSOR_ARCHITECTURE%.==x86. SET mnt=vmount.exe :start wmic diskdrive list brief | find /c /v "" > tmp set /p drives=<tmp set /a "drives-=3" for /l %%G in (0,1,%drives%) do ( %mnt% mount W: \device\Harddisk%%G\partition%partition% > NUL dir W: /a:d /b | find "WINSETUP" IF NOT ERRORLEVEL 1 ( echo "Found!" goto:end ) %mnt% umount W: > NUL ) :: place for a timer command goto:start :end del tmp
Endless loop version.
So what I need now is either a way to lock until initialization completes somehow or use some kind of timed fuse command (sleep, wait and timeout are not available for some reason).
Edited by Gear54rus, 26 April 2014 - 04:28 PM.
Posted 26 April 2014 - 04:29 PM
for a poor man's sleep command you can use
ping 1.1.1.1 -n 1 -w 3000 > nul
Posted 26 April 2014 - 04:31 PM
for a poor man's sleep command you can use
ping 1.1.1.1 -n 1 -w 3000 > nul
Yeah I saw that hack. Will probably use it if nothing else comes along. Or even leave it empty and let it have fun
Edited by Gear54rus, 26 April 2014 - 04:32 PM.
Posted 26 April 2014 - 04:35 PM
It wouldn't surprise me if wmic was missing from many WinPE Setup environments...
Posted 26 April 2014 - 04:36 PM
It wouldn't surprise me if wmic was missing from many WinPE Setup environments...
Aggreed.
Gear64rus : why dont you use the vmount partitions command instead of wmic ?
Posted 26 April 2014 - 04:37 PM
It wouldn't surprise me if wmic was missing from many WinPE Setup environments...
Kinda thought that too.. So far so good. If it is missing then I'll probably have to use diskpart with standalone script.
Edit: or just vmount. Yeah, was kinda stupid on my part to outsource the data about partitions/volumes when it is already available in the same tool.
Originally, I intended the script to choose available drive letters by itself too (thats where wmic came into sight) but string splitting was a pain in the ass so I dropped that.
Also, ping hack does not work because IP stack does not seem to be initialized also guess it doesn't want to give up that easily.
Edited by Gear54rus, 26 April 2014 - 04:49 PM.
Posted 26 April 2014 - 04:51 PM
Well if you really need it i could make a sleep.exe (x32/x64) with a parameter in seconds but I am sure this has been done tons of time out there on internet .
Posted 26 April 2014 - 04:53 PM
Yeah, I'll surely search for that. You see, it is just the matter of including additional binaries or not.
Still, it is better to lock until this event specifically instead of looping but I am not sure how to Google for that... And the fact that WinSetupFromUSB is also using looping mechanism (10 sec for 1st loop and 5 for subsequent ones) further suggests that this is simply impossible.
Edited by Gear54rus, 26 April 2014 - 05:08 PM.
Posted 26 April 2014 - 05:32 PM
Just for the record the "dot syntax" (I presume you are referring to the line).
IF %PROCESSOR_ARCHITECTURE%.==x86. SET mnt=vmount.exe
is only an "old trick of the trade", that is used to avoid, if *for any reason* the variable is not defined, an error.
The "proper way" should be:
IF DEFINED PROCESSOR_ARCHITECTURE IF %PROCESSOR_ARCHITECTURE%==x86 SET mnt=vmount.exe
the dots (but any non-crazy character would do) is to shorten a bit the line (and make the batch run a tadbit faster).
JFYI (waiting):
http://www.msfn.org/...-in-batch-file/
IN Vista and later, CHOICE is back:
http://www.robvanderwoude.com/wait.php
http://www.robvander....com/choice.php
I am not sure to understand the issue about USB device initializing?
I mean, I thought you were booting from the USB device, or are you waiting for the vmount to take effect? Or what else?
Can you describe your situation/procedure?
Wonko
Posted 26 April 2014 - 06:26 PM
Hello!
Looks like I am at the final stage of creating the script. Thanks for the architecture-detecting snippet - it was adapted (the dot syntax is pretty new to me).
Now the last (seemingly) thing here is that at boot, USB drives need some time to initialize.
At the very first moment when the first line of Winpeshl.ini gets executed - all programs report only internal hard disks. USB drives need some time to initialize.
1) Loop and sleep until a tag file on the USB drive in question is available, that's what I am using in WinSetupFromUSB.
2) http://technet.micro...2(v=ws.10).aspx
Wpeutil WaitForRemovableStorage
Not tested and not sure if available in PE2 images, nor if waits for USB fixed drives as well.
@Jaclaz
At that time PNP manager is still initializing devices, USB ones among them. They may or may not be available at the time when a script is executed via WinPEShl.ini, it's launched synchronously with PNP. Usually they are not available at that point, as far as I've tested.
PE2 may take up to a minute and even more to have the USB drives ready, PE3 is much faster, like 5-15 seconds at max, in PE4 they are available in a few seconds, counting from the time when a script is launched through WinPEShl.ini.
Posted 26 April 2014 - 07:34 PM
@Ilko thanks, this explains a lot, I use the SAME stick I use for Vista to NOT touch Pe 2.x's :
http://www.msfn.org/...xp/#entry807225
I now understand how I never noticed an issue like that (even because I have nothing "auto-starting" in WinPEShl.ini).
Wonko
Posted 27 April 2014 - 02:35 AM
1) Loop and sleep until a tag file on the USB drive in question is available, that's what I am using in WinSetupFromUSB.
2) http://technet.micro...2(v=ws.10).aspx
Wpeutil WaitForRemovableStorageNot tested and not sure if available in PE2 images, nor if waits for USB fixed drives as well.
Are you sure about usbdrive.tag? It's just I removed the file (and pretty much all other files except Windows iso, its bootloaders and imdisk) and utility still works for me. I know it works for me, but would it be wise to suggest deletion in the tutorial?
For my detection I used WINSETUP folder.
Posted 27 April 2014 - 04:53 AM
So what's the best way to go about creating tutorial? Should I make separate thread and then link to it from Tutorials section? I could also link to it from SuperUser then.
Is that the right way?
Posted 27 April 2014 - 11:38 AM
Are you sure about usbdrive.tag? It's just I removed the file (and pretty much all other files except Windows iso, its bootloaders and imdisk) and utility still works for me. I know it works for me, but would it be wise to suggest deletion in the tutorial?
For my detection I used WINSETUP folder.
The tag file is the ISO file to be mounted, passed as a parameter to WinPreSetup.exe in WinPEShl.ini.
Posted 27 April 2014 - 02:12 PM
The tag file is the ISO file to be mounted, passed as a parameter to WinPreSetup.exe in WinPEShl.ini.
Oh, Ok. I think I'll switch the script to this detection method too.
If I make it accept argument as path to .iso, in Winpeshl.ini it would be easy to invoke it (since we have that path in a string below). Thanks.
Posted 27 April 2014 - 06:03 PM
I've no idea what you have came up with so far, but if you are still using WinSetupFromUSB, it would be possible with a bit of cheating to avoid most manual work, if not all.
Latest WinSetupFromUSB versions have an advanced option to launch Q-Dir before start of Setup.
You could rename your script to WinPreSetup.exe, use the same switches as WinPreSetup.exe in it, do your stuff to unhide and mount partitions and launch WinPreSetup.exe (Q-Dir.exe) when needed, passing the same parameters.
Next replace Q-Dir.exe with WinPreSetup.exe, the appropriate architecture and use the advanced option to add Q-Dir.
All files are in <WinSetupFromUSB>\files\winsetup\
Let me know if you are going this way and need details.
Boot methods & tools →
Boot from USB / Boot anywhere →
WinPe 2024 LazesoftStarted by fi-zilal , 3 weeks ago ![]() |
|
![]()
|
||
Boot methods & tools →
Boot from USB / Boot anywhere →
USBDualPartStarted by rradjab , 14 Jun 2023 ![]() |
|
![]()
|
||
Groups →
Windows Extreme →
Windows PE →
Windows 11 PE AudioStarted by MetallicWheat , 05 Mar 2023 ![]() |
|
![]()
|
||
Groups →
Windows Extreme →
Windows PE →
Windows 11 PE AudioStarted by MetallicWheat , 05 Mar 2023 ![]() |
|
![]()
|
||
Groups →
Windows Extreme →
Windows PE →
Windows PE 11 - 22621.1 WOW64 SupportStarted by MetallicWheat , 17 Feb 2023 ![]() |
|
![]()
|
0 members, 1 guests, 0 anonymous users