Driver Integration script problems on Win7x64 based Win7PE_SE build
#1
Posted 13 March 2012 - 08:30 PM
General info
Host machine OS: Windows 7 Ultimate SP1 x64
Actual build base OS: Windows 7 Ultimate SP1 x64
Old build base OS: Windows 7 Ultimate SP1 x86
I have already built several PE's before using a Windows 7 Ultimate SP1 x86 source in the save work environment. Now I have decided to work on Windows 7 Ultimate SP1 x64 based builds and the driver integration script just skips without integrating anything. This problem was not there when I used to work on Windows 7 Ultimate SP1 x86 based builds.
I have downloaded the driver packs for win7 x64 from Driver Packs (http://driverpacks.net/) I have unziped them, I have extracted them inside the right folder and I have checked the most common sources of errors, so I would like some help to figure out why this driver integration script is not working as expected.
Log file: http://www.mediafire...vmldlxmmc3y3pmd
Best regards,
Aeolis
#2
Posted 13 March 2012 - 09:46 PM
I figured out the problem. There is a section before all the integration process to check if the drivers folder is empty:
Run,%ScriptFile%,Check_DriverSize it calls the [Check_DriverSize] section below:
[Check_DriverSize]
Set,%DriverFolderSize%,0
If,%SourceArch%,Equal,x86,Set,%DriverFolder%,%pFileBox86%
If,%SourceArch%,Equal,x64,Set,%DriverFolder%,%pFileBox64%
If,ExistDir,%DriverFolder%,Begin
Retrieve,FOLDERSIZE,%DriverFolder%,%DriverFolderSize%
End
The problem is that the retrieve command finds a negative number of bytes for the size of my x64 drivers folder. When it process the x86 drivers folder it finds a positive number of bytes for the size of that folder.
So, as the script check if the %DriverFolderSize% variable value is bigger than 0 it halts on the x64 drivers folder and go as expected on the x86 folder.
Well for future reference the folders have these sizes:
x86 drivers: 1,76 GB (1.895.124.992 bytes)
x64 drivers: 2,16 GB (2.321.223.680 bytes)
Is there a limitation for the retrieve,foldersize instruction?
Best regards,
Aeolis
Edited by Aeolis, 13 March 2012 - 09:48 PM.
#3
Posted 13 March 2012 - 10:10 PM
Sorry, i found out reaserching in the forum posts that it is a bug from WinBuilder version 82 and it is fixed on version 83. So, I will just wait until it is released. In the meantime as a temporary fix I have changed this line:
If,%DriverFolderSize%,Bigger,0,Begin ------------> If,%DriverFolderSize%,NotEqual,0,Begin
It will work until WinBuilder version 83 is out.
Best regards,
Aeolis
Edited by Aeolis, 13 March 2012 - 10:10 PM.
#4
Posted 13 March 2012 - 10:18 PM
I guess: -173740032
2^31 = 2147483648
2321223680 - 2147483648 = 173740032 (plus the overflow counted as a marker for a negative number)
In binary your foldersize looks like this:
10001010010110110001000000000000
^
This is the marker for positive/negative number. Only the other 31bits can be used to describe the number.
#5
Posted 13 March 2012 - 10:21 PM
#6
Posted 13 March 2012 - 10:47 PM
MedEvil the number was -1981297668. Very similar to the one here: http://reboot.pro/15864/
Thank you for your attention.
Best regards,
Aeolis
#7
Posted 14 March 2012 - 12:07 AM
#8
Posted 14 March 2012 - 08:12 AM
Some retrieve / calculate operations are calculated with 32 bit integers. That causes values greater 2^32 to become wrong. (nagative is caused by the most significalt bit).
I fixed. It will be delivered with next WinBuilder version.
@Nuno: What about a version 082 SP1?
Here shortly the history:
[083]
date 2011-aug-16
fixed - bug in GetParam
changed - source editor line length increased from 1024 to 10240
fixed - "Invalid parameter count" warning in RegWrite 0x0
changed - FILEZIZE and FOLDERSIZE to int64.
changed - StrFormat,BYTES to int64
fixed - bug with Retrieve,FOLDERSIZE, when folder contains a file > 2 GB
changed - more meaningful error messages for RegMulti
added - language translation for download button
fixed - bug with unresolved nested variables like %setupfile_%SourceArch%%
Peter
#9
Posted 14 March 2012 - 10:54 PM
and thanks for your binary explanations MedEvil, no other question
I added your workaround to "Driver Integration", "Driver Package Installer" and also in "4 - Create ISO", "Copy to USB-Device", "Copy to USB-Device BCD BootMGR" for the button "Include files in Iso RootCD".If,%DriverFolderSize%,Bigger,0,Begin ------------> If,Not,%DriverFolderSize%,Equal,0,Begin
Also tagged with one or more of these keywords: driver, integraton, script, error, x64
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users