Thân chào các bạn, hôm qua bạn @@sec0 có đề nghị tôi mở thêm một topic khác với chủ đề hướng dẫn cách tạo Win10XPE, tôi sẽ hướng dẫn lại các bước căn bản và vì ở ĐÂY có các Pro đã chia sẻ trước đó rồi, nên nếu bạn nào có thêm thắc mắc thì có thể vào lại các cmt trước đó để tìm hiểu thêm và hy vọng @lvt491, @Le Duc 287, @trungminh có thời gian rỗi để hổ trợ các bạn.
Update ngày 02/02/2023 Link bản mới nhất Win10XPE Project -2023-02-01,
các bạn load về, sau đó chạy giải nén file 001 là có luôn nguyên folder:
Ở hình trên, các bạn click vào Win10XPE, load về và giải nén, đây là bản mới nhất ngày 16/01/2021, các bạn cũng thấy các bản Windows mà nó hổ trợ như trong phần đóng khung hình chữ nhật bên dưới, tôi làm với bản Win 2004 và cũng tạm đầy đủ .
Sau khi giải nén ta có folder và files như hình, lưu ý tôi chép vào partition khác trên ổ cứng, không chép vào C: nhe các bạn:
Các bạn lưu ý cmt của @trungminh như hình dưới đây nhé:
Right-click vào Win10XPE.exe, run as admin ở hình trên ta có giao diện sau:
Từ chổ mũi tên, click vào đó và chọn load về bản Windows phù hợp ở giao diện dưới này, chọn bản nào thì các bạn xem lại ở hình đầu tiênở bên trên, phần đóng khung hình chữ nhật lớn bên tay phải của hình:
Riêng tôi thì tôi chọn bản Win2004 như hình dưới đây:
Sau khi load bản WIN2004 về tôi cũng giải nén vào part J: như hình dưới:
Vào lại giao diện Win Builder XPE:
Click vào chổ mũi tên tìm tới folder chứa Win2004 đã giải nén trước đó, ta có hình sau:
Tôi sẽ ngưng cmt ở đây, mời các bạn xem cmt kế tiếp....
Các bạn vui lòng kéo xuống dưới, xem tiếp từ cmt #9 trở đi, tôi vừa thực hành, vừa chụp hình cho thực tế nên không post hết 1 lần vào đây được. Cảm ơn các bạn đã theo dõi.
Update: Có một bài viết của @trungminh rất chi tiết và vô cùng hữu ích cho các bạn từ link dưới đây, mời các bạn vào tham khảo nhé:
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
www.mediafire.com
B2: Mở notepad sao chép đoạn code dưới đây và lưu lại với tên là PeApps.au3 (Để Encoding là UTF8)
==> Sau này cần thêm bớt chỉnh sửa gì sẽ sửa ở file này cũng khá là tiện
Mã:
#NoTrayIcon
_Main()
;Chỉnh sửa các kiểu ở hàm Main() dưới đây:
Func _Main()
Local $pstart = _PSTART_Shortcut()
;nếu đường dẫn khác Apps\PSTART.exe thì sửa thành: vd _PSTART_Shortcut('Program\PSTART64.exe')
If $pstart = Null Then
If _Mount_ISO() = True Then
$pstart = _PSTART_Shortcut()
_Load_WCSFile($pstart)
EndIf
;nếu file tên khác Apps.iso thì sửa thành: vd: _Mount_ISO('Other.iso')
;nếu file tên khác Apps.wim và có nhiều index thì sửa thành: vd: _Mount_WIM('Apps64.wim', 2)
;mặc định sẽ mount file wim vào B:\Apps. Nếu thay đổi sửa thành: vd: _Mount_WIM('Apps64.wim', 2, 'R:\Apps64')
Else
;load file Apps.wcs để có menu chuột phải
_Load_WCSFile($pstart)
;nếu tên khác Apps.wcs thì sửa thành: vd: _Load_WCSFile($pstart, 'AppsP.wcs')
EndIf
;If _Mount_WIM('Drv10x64.wim', 1, 'B:\Drivers') = True Then
; _DPInst_Drivers('B:\Drivers')
; _UnMount_WIM('B:\Drivers')
;EndIf
;_DPInst_Drivers(_Get_Path('DriverPacks'))
;_MyShortcut()
Exit
EndFunc ;==>_Main
;Functions +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Func _MyShortcut()
;LVT491 Function
_Run_Wait('PECMD.exe LINK %Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153')
_Run_Wait('PECMD.exe LINK %Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\System32\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44')
_Run_Wait('PECMD.exe LINK %Desktop%\PENetwork,%ProgramFiles%\PENetwork_x64\PENetwork.exe')
_Run_Wait('PECMD.exe LINK %Desktop%\Explorer++,%ProgramFiles%\WinXShell\Explorer++.exe')
FileDelete('X:\Users\Administrator\Desktop\Admin Login.LNK')
Local $SDIPath = _Get_Path('DriverPacks\SDI_auto.au3')
If $SDIPath <> Null Then _Run_Wait('PECMD.exe LINK %Desktop%\Inst Driver,%WinDir%\System32\AutoIt3.exe,' & $SDIPath & ',%WinDir%\System32\shell32.dll#162')
_Run_Wait('PECMD.exe ENVI #TEMP=B:\Temp')
_Run_Wait('PECMD.exe ENVI @@DeskTopFresh=1')
EndFunc ;==>_MyShortcut
Func _Mount_ISO($FileName = 'Apps.iso')
Local $FilePath = _Get_File($FileName)
If $FilePath <> Null Then
_Run_Wait('imdisk.exe -a -f ' & $FilePath & ' -m #:')
Return True
Else
Return False
EndIf
EndFunc ;==>_Mount_ISO
Func _Mount_WIM($FileName = 'Apps.wim', $Index = 1, $MountDir = 'B:\Apps')
Local $FilePath = _Get_File($FileName)
If $FilePath <> Null Then
DirCreate($MountDir)
If Not FileExists($MountDir) Then Return False
_Run_Wait('DISM.exe /Mount-Image /ImageFile:' & $FilePath & ' /Index:' & $Index & ' /MountDir:' & $MountDir)
;code imagex:
;_Run_Wait('imagex.exe /mountrw ' & $FilePath & ' ' & $Index & ' ' & $MountDir)
Return True
Else
Return False
EndIf
EndFunc ;==>_Mount_WIM
Func _UnMount_WIM($MountDir = 'B:\Apps')
_Run_Wait('DISM.exe /Unmount-Image /MountDir:' & $MountDir & ' /Discard')
;_Run_Wait('imagex.exe /unmount ' & $MountDir)
FileDelete($MountDir)
EndFunc ;==>_UnMount_WIM
Func _DPInst_Drivers($FolderDir)
If FileExists($FolderDir) Then
_Run_Wait('dpinst.exe /s /path ' & $FolderDir)
EndIf
EndFunc ;==>_DPInst_Drivers
Func _PSTART_Shortcut($FileName = 'Apps\PSTART.exe', $ShortcutName = 'PSTART')
Local $FilePath = _Get_Path($FileName)
If $FilePath <> Null Then
_Run_Wait('PECMD.exe LINK %Desktop%\' & $ShortcutName & ',' & $FilePath)
Return $FilePath
Else
Return Null
EndIf
EndFunc ;==>_PSTART_Shortcut
Func _Load_WCSFile($FileDir, $FileName = 'Apps.wcs')
Local $FolderDir = StringRegExpReplace($FileDir, '\\[^\\]*$', '')
If @error Then Return
Local $FilePath = $FolderDir & '\' & $FileName
If FileExists($FilePath) Then _Run_Wait('PECMD.exe LOAD ' & $FilePath)
EndFunc ;==>_Load_WCSFile
Func _Get_Path($Path)
Local $Drv = DriveGetDrive('ALL')
For $i = 1 To $Drv[0]
If FileExists($Drv[$i] & '\' & $Path) Then Return StringUpper($Drv[$i]) & '\' & $Path
Next
Return Null
EndFunc ;==>_Get_Path
Func _Get_File($FileName)
Local $Drv = DriveGetDrive('ALL'), $Fdl
For $i = 1 To $Drv[0]
If FileExists($Drv[$i] & '\' & $FileName) Then Return StringUpper($Drv[$i]) & '\' & $FileName
Next
For $i = 1 To $Drv[0]
$Fdl = _FileListToArray(StringUpper($Drv[$i]), '*', 2, True)
If Not @error Then
For $j = 1 To $Fdl[0]
If FileExists($Fdl[$j] & '\' & $FileName) Then Return $Fdl[$j] & '\' & $FileName
Next
EndIf
Next
Return Null
EndFunc ;==>_Get_File
Func _Run_Wait($Command)
RunWait(@ComSpec & ' /C ' & $Command, '', @SW_HIDE)
EndFunc ;==>_Run_Wait
Func _FileListToArray($sFilePath, $sFilter = '*', $iFlag = 0, $bReturnPath = False)
Local $sDelimiter = '|', $sFileList = '', $sFileName = '', $sFullPath = ''
$sFilePath = StringRegExpReplace($sFilePath, '[\\/]+$', '') & '\'
If $iFlag = Default Then $iFlag = 0
If $bReturnPath Then $sFullPath = $sFilePath
If $sFilter = Default Then $sFilter = '*'
If Not FileExists($sFilePath) Then Return SetError(1, 0, 0)
If StringRegExp($sFilter, '[\\/:><\|]|(?s)^\s*$') Then Return SetError(2, 0, 0)
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 0, 0)
Local $hSearch = FileFindFirstFile($sFilePath & $sFilter)
If @error Then Return SetError(4, 0, 0)
While 1
$sFileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
If ($iFlag + @extended = 2) Then ContinueLoop
$sFileList &= $sDelimiter & $sFullPath & $sFileName
WEnd
FileClose($hSearch)
If $sFileList = '' Then Return SetError(4, 0, 0)
Return StringSplit(StringTrimLeft($sFileList, 1), $sDelimiter)
EndFunc ;==>_FileListToArray
B3: Mở file winpe.wim của các bạn bằng 7-Zip, kéo thả 2 file ở B1, B2 vào folder \Windows\System32\ (Bấm Yes để lưu thay đổi)
B4: Vẫn ở phần 7-Zip chuột phải vào file Windows\System32\PECMD.ini chọn Edit để chỉnh sửa. Thêm 1 dòng như hình dưới đây sau đó lưu lại.
mình thấy code của @anhdv mà trung minh gửi sử dụng để mount là hợp lý nhất nếu vì mk có thể mount hoặc unmount tùy thích khi đã vào winpe. trước mình dùng cmd mount và unmount nhưng phải thêm nhiều shortcut để mount những file mình thích hoặc unmount nếu không thích. còn với file của anhdv mình có thể thêm bất cứ file .wim nào nếu muốn chỉ cần thêm vào file winr.ini
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
www.mediafire.com
B2: Mở notepad sao chép đoạn code dưới đây và lưu lại với tên là PeApps.au3 (Để Encoding là UTF8)
==> Sau này cần thêm bớt chỉnh sửa gì sẽ sửa ở file này cũng khá là tiện
Mã:
#NoTrayIcon
_Main()
;Chỉnh sửa các kiểu ở hàm Main() dưới đây:
Func _Main()
Local $pstart = _PSTART_Shortcut()
;nếu đường dẫn khác Apps\PSTART.exe thì sửa thành: vd _PSTART_Shortcut('Program\PSTART64.exe')
If $pstart = Null Then
If _Mount_ISO() = True Then
$pstart = _PSTART_Shortcut()
_Load_WCSFile($pstart)
EndIf
;nếu file tên khác Apps.iso thì sửa thành: vd: _Mount_ISO('Other.iso')
;nếu file tên khác Apps.wim và có nhiều index thì sửa thành: vd: _Mount_WIM('Apps64.wim', 2)
;mặc định sẽ mount file wim vào B:\Apps. Nếu thay đổi sửa thành: vd: _Mount_WIM('Apps64.wim', 2, 'R:\Apps64')
Else
;load file Apps.wcs để có menu chuột phải
_Load_WCSFile($pstart)
;nếu tên khác Apps.wcs thì sửa thành: vd: _Load_WCSFile($pstart, 'AppsP.wcs')
EndIf
;If _Mount_WIM('Drv10x64.wim', 1, 'B:\Drivers') = True Then
; _DPInst_Drivers('B:\Drivers')
; _UnMount_WIM('B:\Drivers')
;EndIf
;_DPInst_Drivers(_Get_Path('DriverPacks'))
;_MyShortcut()
Exit
EndFunc ;==>_Main
;Functions +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Func _MyShortcut()
;LVT491 Function
_Run_Wait('PECMD.exe LINK %Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153')
_Run_Wait('PECMD.exe LINK %Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\System32\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44')
_Run_Wait('PECMD.exe LINK %Desktop%\PENetwork,%ProgramFiles%\PENetwork_x64\PENetwork.exe')
_Run_Wait('PECMD.exe LINK %Desktop%\Explorer++,%ProgramFiles%\WinXShell\Explorer++.exe')
FileDelete('X:\Users\Administrator\Desktop\Admin Login.LNK')
Local $SDIPath = _Get_Path('DriverPacks\SDI_auto.au3')
If $SDIPath <> Null Then _Run_Wait('PECMD.exe LINK %Desktop%\Inst Driver,%WinDir%\System32\AutoIt3.exe,' & $SDIPath & ',%WinDir%\System32\shell32.dll#162')
_Run_Wait('PECMD.exe ENVI #TEMP=B:\Temp')
_Run_Wait('PECMD.exe ENVI @@DeskTopFresh=1')
EndFunc ;==>_MyShortcut
Func _Mount_ISO($FileName = 'Apps.iso')
Local $FilePath = _Get_File($FileName)
If $FilePath <> Null Then
_Run_Wait('imdisk.exe -a -f ' & $FilePath & ' -m #:')
Return True
Else
Return False
EndIf
EndFunc ;==>_Mount_ISO
Func _Mount_WIM($FileName = 'Apps.wim', $Index = 1, $MountDir = 'B:\Apps')
Local $FilePath = _Get_File($FileName)
If $FilePath <> Null Then
DirCreate($MountDir)
If Not FileExists($MountDir) Then Return False
_Run_Wait('DISM.exe /Mount-Image /ImageFile:' & $FilePath & ' /Index:' & $Index & ' /MountDir:' & $MountDir)
;code imagex:
;_Run_Wait('imagex.exe /mountrw ' & $FilePath & ' ' & $Index & ' ' & $MountDir)
Return True
Else
Return False
EndIf
EndFunc ;==>_Mount_WIM
Func _UnMount_WIM($MountDir = 'B:\Apps')
_Run_Wait('DISM.exe /Unmount-Image /MountDir:' & $MountDir & ' /Discard')
;_Run_Wait('imagex.exe /unmount ' & $MountDir)
FileDelete($MountDir)
EndFunc ;==>_UnMount_WIM
Func _DPInst_Drivers($FolderDir)
If FileExists($FolderDir) Then
_Run_Wait('dpinst.exe /s /path ' & $FolderDir)
EndIf
EndFunc ;==>_DPInst_Drivers
Func _PSTART_Shortcut($FileName = 'Apps\PSTART.exe', $ShortcutName = 'PSTART')
Local $FilePath = _Get_Path($FileName)
If $FilePath <> Null Then
_Run_Wait('PECMD.exe LINK %Desktop%\' & $ShortcutName & ',' & $FilePath)
Return $FilePath
Else
Return Null
EndIf
EndFunc ;==>_PSTART_Shortcut
Func _Load_WCSFile($FileDir, $FileName = 'Apps.wcs')
Local $FolderDir = StringRegExpReplace($FileDir, '\\[^\\]*$', '')
If @error Then Return
Local $FilePath = $FolderDir & '\' & $FileName
If FileExists($FilePath) Then _Run_Wait('PECMD.exe LOAD ' & $FilePath)
EndFunc ;==>_Load_WCSFile
Func _Get_Path($Path)
Local $Drv = DriveGetDrive('ALL')
For $i = 1 To $Drv[0]
If FileExists($Drv[$i] & '\' & $Path) Then Return StringUpper($Drv[$i]) & '\' & $Path
Next
Return Null
EndFunc ;==>_Get_Path
Func _Get_File($FileName)
Local $Drv = DriveGetDrive('ALL'), $Fdl
For $i = 1 To $Drv[0]
If FileExists($Drv[$i] & '\' & $FileName) Then Return StringUpper($Drv[$i]) & '\' & $FileName
Next
For $i = 1 To $Drv[0]
$Fdl = _FileListToArray(StringUpper($Drv[$i]), '*', 2, True)
If Not @error Then
For $j = 1 To $Fdl[0]
If FileExists($Fdl[$j] & '\' & $FileName) Then Return $Fdl[$j] & '\' & $FileName
Next
EndIf
Next
Return Null
EndFunc ;==>_Get_File
Func _Run_Wait($Command)
RunWait(@ComSpec & ' /C ' & $Command, '', @SW_HIDE)
EndFunc ;==>_Run_Wait
Func _FileListToArray($sFilePath, $sFilter = '*', $iFlag = 0, $bReturnPath = False)
Local $sDelimiter = '|', $sFileList = '', $sFileName = '', $sFullPath = ''
$sFilePath = StringRegExpReplace($sFilePath, '[\\/]+$', '') & '\'
If $iFlag = Default Then $iFlag = 0
If $bReturnPath Then $sFullPath = $sFilePath
If $sFilter = Default Then $sFilter = '*'
If Not FileExists($sFilePath) Then Return SetError(1, 0, 0)
If StringRegExp($sFilter, '[\\/:><\|]|(?s)^\s*$') Then Return SetError(2, 0, 0)
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 0, 0)
Local $hSearch = FileFindFirstFile($sFilePath & $sFilter)
If @error Then Return SetError(4, 0, 0)
While 1
$sFileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
If ($iFlag + @extended = 2) Then ContinueLoop
$sFileList &= $sDelimiter & $sFullPath & $sFileName
WEnd
FileClose($hSearch)
If $sFileList = '' Then Return SetError(4, 0, 0)
Return StringSplit(StringTrimLeft($sFileList, 1), $sDelimiter)
EndFunc ;==>_FileListToArray
B3: Mở file winpe.wim của các bạn bằng 7-Zip, kéo thả 2 file ở B1, B2 vào folder \Windows\System32\ (Bấm Yes để lưu thay đổi)
B4: Vẫn ở phần 7-Zip chuột phải vào file Windows\System32\PECMD.ini chọn Edit để chỉnh sửa. Thêm 1 dòng như hình dưới đây sau đó lưu lại.
Cảm ơn cháu, vậy là bác tạo thêm file WinR.ini rồi chép vào System32 đúng không cháu? Hôm qua với lệnh mount thêm vào từ pecmd.ini của @trungminh, nó mount lên được nhưng có một số soft bác không chạy được với AppsP.wim này, chẳng hạn như là : DrWeb, Teamviewer ( đã login vào Admin ), soft maker... Sáng nay bác lấy thử Apps cũ, không có phần AppsP thế vào thì mở được DrWeb nhưng Teamviewer vẫn chưa được làm bác cũng hơi nản.
Bác muốn hỏi cháu có 2 files từ System32 : 1 là WimR.ini ; 2 là WinR.ini mà file số 2 là bác chép của cháu. Vậy bác có phải xoá bớt 1 file không? Lúc bác mở ra thấy nội dung đều giống nhau đó.
Bác muốn hỏi cháu có 2 files từ System32 : 1 là WimR.ini ; 2 là WinR.ini mà file số 2 là bác chép của cháu. Vậy bác có phải xoá bớt 1 file không? Lúc bác mở ra thấy nội dung đều giống nhau đó.
Bác sửa nội dung file wimr cũ của bạn Trung Minh bằng code cháu vừa sửa lại là ok nó là file wimr.ini cháu viết nhầm vì cháu đổi tên lung tung lên ko nhớ file trung minh gửi là gì chỉ nhớ mang máng. Bác copy lại code mới nhé cháu có sửa lại một chút vì cháu quên để đường dẫn theo foder của cháu
@Le Duc 287 , kết quả tốt rồi cháu nhưng cái AppsP.wim này bác không mở được DrWeb, bên cháu có mở được không?
Mở TV từ appsp.wim cũng không được:
Nếu bác vào lại Programs cũ của XPE thì mở được TV:
DrWeb thì vẫn mở được từ Apps của hoanchien:
Coi như phần AppsP.wim của anhdv chỉ chạy tốt trên bản PE của cháu ấy với cách build khác, bác cũng đã thử với Apps bản cũ hơn rồi, cái đó chỉ chạy được DrWeb thôi, TV thì bị lỗi. Thôi thì bây giờ mình dùng hỗn tạp, cái nào chạy đươc thì dùng, khỏi sửa tới sửa lui làm cực bác cháu mình quá.
MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.
www.mediafire.com
B2: Mở notepad sao chép đoạn code dưới đây và lưu lại với tên là PeApps.au3 (Để Encoding là UTF8)
==> Sau này cần thêm bớt chỉnh sửa gì sẽ sửa ở file này cũng khá là tiện
Mã:
#NoTrayIcon
_Main()
;Chỉnh sửa các kiểu ở hàm Main() dưới đây:
Func _Main()
Local $pstart = _PSTART_Shortcut()
;nếu đường dẫn khác Apps\PSTART.exe thì sửa thành: vd _PSTART_Shortcut('Program\PSTART64.exe')
If $pstart = Null Then
If _Mount_ISO() = True Then
$pstart = _PSTART_Shortcut()
_Load_WCSFile($pstart)
EndIf
;nếu file tên khác Apps.iso thì sửa thành: vd: _Mount_ISO('Other.iso')
;nếu file tên khác Apps.wim và có nhiều index thì sửa thành: vd: _Mount_WIM('Apps64.wim', 2)
;mặc định sẽ mount file wim vào B:\Apps. Nếu thay đổi sửa thành: vd: _Mount_WIM('Apps64.wim', 2, 'R:\Apps64')
Else
;load file Apps.wcs để có menu chuột phải
_Load_WCSFile($pstart)
;nếu tên khác Apps.wcs thì sửa thành: vd: _Load_WCSFile($pstart, 'AppsP.wcs')
EndIf
;If _Mount_WIM('Drv10x64.wim', 1, 'B:\Drivers') = True Then
; _DPInst_Drivers('B:\Drivers')
; _UnMount_WIM('B:\Drivers')
;EndIf
;_DPInst_Drivers(_Get_Path('DriverPacks'))
;_MyShortcut()
Exit
EndFunc ;==>_Main
;Functions +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Func _MyShortcut()
;LVT491 Function
_Run_Wait('PECMD.exe LINK %Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153')
_Run_Wait('PECMD.exe LINK %Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\System32\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44')
_Run_Wait('PECMD.exe LINK %Desktop%\PENetwork,%ProgramFiles%\PENetwork_x64\PENetwork.exe')
_Run_Wait('PECMD.exe LINK %Desktop%\Explorer++,%ProgramFiles%\WinXShell\Explorer++.exe')
FileDelete('X:\Users\Administrator\Desktop\Admin Login.LNK')
Local $SDIPath = _Get_Path('DriverPacks\SDI_auto.au3')
If $SDIPath <> Null Then _Run_Wait('PECMD.exe LINK %Desktop%\Inst Driver,%WinDir%\System32\AutoIt3.exe,' & $SDIPath & ',%WinDir%\System32\shell32.dll#162')
_Run_Wait('PECMD.exe ENVI #TEMP=B:\Temp')
_Run_Wait('PECMD.exe ENVI @@DeskTopFresh=1')
EndFunc ;==>_MyShortcut
Func _Mount_ISO($FileName = 'Apps.iso')
Local $FilePath = _Get_File($FileName)
If $FilePath <> Null Then
_Run_Wait('imdisk.exe -a -f ' & $FilePath & ' -m #:')
Return True
Else
Return False
EndIf
EndFunc ;==>_Mount_ISO
Func _Mount_WIM($FileName = 'Apps.wim', $Index = 1, $MountDir = 'B:\Apps')
Local $FilePath = _Get_File($FileName)
If $FilePath <> Null Then
DirCreate($MountDir)
If Not FileExists($MountDir) Then Return False
_Run_Wait('DISM.exe /Mount-Image /ImageFile:' & $FilePath & ' /Index:' & $Index & ' /MountDir:' & $MountDir)
;code imagex:
;_Run_Wait('imagex.exe /mountrw ' & $FilePath & ' ' & $Index & ' ' & $MountDir)
Return True
Else
Return False
EndIf
EndFunc ;==>_Mount_WIM
Func _UnMount_WIM($MountDir = 'B:\Apps')
_Run_Wait('DISM.exe /Unmount-Image /MountDir:' & $MountDir & ' /Discard')
;_Run_Wait('imagex.exe /unmount ' & $MountDir)
FileDelete($MountDir)
EndFunc ;==>_UnMount_WIM
Func _DPInst_Drivers($FolderDir)
If FileExists($FolderDir) Then
_Run_Wait('dpinst.exe /s /path ' & $FolderDir)
EndIf
EndFunc ;==>_DPInst_Drivers
Func _PSTART_Shortcut($FileName = 'Apps\PSTART.exe', $ShortcutName = 'PSTART')
Local $FilePath = _Get_Path($FileName)
If $FilePath <> Null Then
_Run_Wait('PECMD.exe LINK %Desktop%\' & $ShortcutName & ',' & $FilePath)
Return $FilePath
Else
Return Null
EndIf
EndFunc ;==>_PSTART_Shortcut
Func _Load_WCSFile($FileDir, $FileName = 'Apps.wcs')
Local $FolderDir = StringRegExpReplace($FileDir, '\\[^\\]*$', '')
If @error Then Return
Local $FilePath = $FolderDir & '\' & $FileName
If FileExists($FilePath) Then _Run_Wait('PECMD.exe LOAD ' & $FilePath)
EndFunc ;==>_Load_WCSFile
Func _Get_Path($Path)
Local $Drv = DriveGetDrive('ALL')
For $i = 1 To $Drv[0]
If FileExists($Drv[$i] & '\' & $Path) Then Return StringUpper($Drv[$i]) & '\' & $Path
Next
Return Null
EndFunc ;==>_Get_Path
Func _Get_File($FileName)
Local $Drv = DriveGetDrive('ALL'), $Fdl
For $i = 1 To $Drv[0]
If FileExists($Drv[$i] & '\' & $FileName) Then Return StringUpper($Drv[$i]) & '\' & $FileName
Next
For $i = 1 To $Drv[0]
$Fdl = _FileListToArray(StringUpper($Drv[$i]), '*', 2, True)
If Not @error Then
For $j = 1 To $Fdl[0]
If FileExists($Fdl[$j] & '\' & $FileName) Then Return $Fdl[$j] & '\' & $FileName
Next
EndIf
Next
Return Null
EndFunc ;==>_Get_File
Func _Run_Wait($Command)
RunWait(@ComSpec & ' /C ' & $Command, '', @SW_HIDE)
EndFunc ;==>_Run_Wait
Func _FileListToArray($sFilePath, $sFilter = '*', $iFlag = 0, $bReturnPath = False)
Local $sDelimiter = '|', $sFileList = '', $sFileName = '', $sFullPath = ''
$sFilePath = StringRegExpReplace($sFilePath, '[\\/]+$', '') & '\'
If $iFlag = Default Then $iFlag = 0
If $bReturnPath Then $sFullPath = $sFilePath
If $sFilter = Default Then $sFilter = '*'
If Not FileExists($sFilePath) Then Return SetError(1, 0, 0)
If StringRegExp($sFilter, '[\\/:><\|]|(?s)^\s*$') Then Return SetError(2, 0, 0)
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 0, 0)
Local $hSearch = FileFindFirstFile($sFilePath & $sFilter)
If @error Then Return SetError(4, 0, 0)
While 1
$sFileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
If ($iFlag + @extended = 2) Then ContinueLoop
$sFileList &= $sDelimiter & $sFullPath & $sFileName
WEnd
FileClose($hSearch)
If $sFileList = '' Then Return SetError(4, 0, 0)
Return StringSplit(StringTrimLeft($sFileList, 1), $sDelimiter)
EndFunc ;==>_FileListToArray
B3: Mở file winpe.wim của các bạn bằng 7-Zip, kéo thả 2 file ở B1, B2 vào folder \Windows\System32\ (Bấm Yes để lưu thay đổi)
B4: Vẫn ở phần 7-Zip chuột phải vào file Windows\System32\PECMD.ini chọn Edit để chỉnh sửa. Thêm 1 dòng như hình dưới đây sau đó lưu lại.
@Le Duc 287 , kết quả tốt rồi cháu nhưng cái AppsP.wim này bác không mở được DrWeb, bên cháu có mở được không?
Mở TV từ appsp.wim cũng không được:
Nếu bác vào lại Programs cũ của XPE thì mở được TV:
DrWeb thì vẫn mở được từ Apps của hoanchien:
Coi như phần AppsP.wim của anhdv chỉ chạy tốt trên bản PE của cháu ấy với cách build khác, bác cũng đã thử với Apps bản cũ hơn rồi, cái đó chỉ chạy được DrWeb thôi, TV thì bị lỗi. Thôi thì bây giờ mình dùng hỗn tạp, cái nào chạy đươc thì dùng, khỏi sửa tới sửa lui làm cực bác cháu mình quá.
Apps này bác có test rồi cháu, hiện chỉ mở được DrWeb còn TV thì không? Chép vào không đổi Apps.wim thành AppsP.wim được cháu, nếu đổi thì không tự mount lên được.
Apps này bác có test rồi cháu, hiện chỉ mở được DrWeb còn TV thì không? Chép vào không đổi Apps.wim thành AppsP.wim được cháu, nếu đổi thì không tự mount lên được.
Đúng rồi cháu quên mất cấu trúc file appsp khác so với apps vì anhdv cho thêm p vào file vd appsp.wcs và pstartp.exe bác đổi lại codeo những dòng này xoá p đi là ok