Install UWP
Install UWP
SET OSDST=%~d0
if not exist %~d0\OEM\Preload\Command\POP*.ini set OSDST=C:
if not exist %OSDST%\OEM\AcerLogs md %OSDST%\OEM\AcerLogs
SET LogPath=%OSDST%\OEM\AcerLogs\DriverInstallation.Log
ECHO.>>%LogPath%
ECHO %DATE% %TIME%[Log START] ============ %~dpnx0 ============ >> %LogPath%
SETLOCAL ENABLEDELAYEDEXPANSION
pushd "%~dp0"
:::: clear %OSDST%\OEM\FilterVCLibsList.txt
if exist %OSDST%\OEM\FilterVCLibsList.txt del /f /q %OSDST%\OEM\
FilterVCLibsList.txt >NUL 2>&1
if exist CheckingVCLib2_Done.tag del /f /q CheckingVCLib2_Done.tag >NUL 2>&1
md "%temp%\scratchdir"
SET TargetVCLib=Microsoft.VCLibs.140.00_
ECHO %DATE% %TIME%[Log TRACE] SET ImgPath=/online >>%LogPath% 2>&1
SET ImgPath=/online
ECHO %DATE% %TIME%[Log TRACE] reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\
Windows NT\CurrentVersion\WinPE" >>%LogPath% 2>&1
reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinPE"
>>%LogPath% 2>&1
ECHO.>>%LogPath%
if !errorlevel! equ 0 (
ECHO !DATE! !TIME![Log TRACE] Running in the WinPE, SET ImgPath=/image:
%OSDST%\ >>%LogPath% 2>&1
SET ImgPath=/image:%OSDST%\
ECHO !DATE! !TIME![Log TRACE] goto :InstallUWP >>%LogPath% 2>&1
goto :InstallUWP
) else if /i "%SystemDrive%" neq "%OSDST%" (
ECHO !DATE! !TIME![Log TRACE] Running in the Offline, SET ImgPath=/image:
%OSDST%\ >>%LogPath% 2>&1
SET ImgPath=/image:%OSDST%\
ECHO !DATE! !TIME![Log TRACE] goto :InstallUWP >>%LogPath% 2>&1
goto :InstallUWP
) else (
ECHO !DATE! !TIME![Log TRACE] This is Online installation. >>%LogPath% 2>&1
)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::
:::: DO Not Trim Trailing space............
::::
:::: Each Set Value in the end exist the Space for dism split paramter
:::: set APPXPackagePath_X86=!APPXPackagePath_X86!/dependencypackagepath:"%%d"
::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:InstallUWP
IF /i "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (
call :GetParameter
REM ECHO %DATE% %TIME%[Log TRACE] dism %ImgPath% /english /add-
provisionedappxpackage /packagepath:"!packagepath!" /licensepath:"!licensepath!" !
DependencyPackage_X64!/CustomDataPath:"%CustomDATA%" /region:all /scratchdir:"%temp
%\scratchdir">>%LogPath% 2>&1
REM dism %ImgPath% /english /add-provisionedappxpackage /packagepath:"!
packagepath!" /licensepath:"!licensepath!"
!DependencyPackage_X64!/CustomDataPath:"%CustomDATA%" /region:all
/scratchdir:"%temp%\scratchdir">>%LogPath% 2>&1
ECHO %DATE% %TIME%[Log TRACE] dism %ImgPath% /english /add-
provisionedappxpackage /packagepath:"!packagepath!" /licensepath:"!licensepath!" !
DependencyPackage_X64!/region:all /scratchdir:"%temp%\scratchdir">>%LogPath% 2>&1
dism %ImgPath% /english /add-provisionedappxpackage /packagepath:"!
packagepath!" /licensepath:"!licensepath!" !DependencyPackage_X64!/region:all
/scratchdir:"%temp%\scratchdir">>%LogPath% 2>&1
) else (
call :GetParameter
REM ECHO %DATE% %TIME%[Log TRACE] dism %ImgPath% /english /add-
provisionedappxpackage /packagepath:"!packagepath!" /licensepath:"!licensepath!" !
DependencyPackage_X86!/CustomDataPath:"%CustomDATA%" /region:all /scratchdir:"%temp
%\scratchdir">>%LogPath% 2>&1
REM dism %ImgPath% /english /add-provisionedappxpackage /packagepath:"!
packagepath!" /licensepath:"!licensepath!"
!DependencyPackage_X86!/CustomDataPath:"%CustomDATA%" /region:all
/scratchdir:"%temp%\scratchdir">>%LogPath% 2>&1
ECHO %DATE% %TIME%[Log TRACE] dism %ImgPath% /english /add-
provisionedappxpackage /packagepath:"!packagepath!" /licensepath:"!licensepath!" !
DependencyPackage_X86!/region:all /scratchdir:"%temp%\scratchdir">>%LogPath% 2>&1
dism %ImgPath% /english /add-provisionedappxpackage /packagepath:"!
packagepath!" /licensepath:"!licensepath!" !DependencyPackage_X86!/region:all
/scratchdir:"%temp%\scratchdir">>%LogPath% 2>&1
)
SET DISMErrCode=%errorlevel%
ECHO %DATE% %TIME%[Log TRACE] got return code [%DISMErrCode%] >>%LogPath%
if %DISMErrCode% neq 0 (
ECHO !DATE! !TIME![Log TRACE] Return code is [%DISMErrCode%] >>%LogPath%
ECHO !DATE! !TIME![Log TRACE] Trying to checking if install on
offline=[/image:%OSDST%\] >>%LogPath%
if /i "%ImgPath%" equ "/image:%OSDST%\" (
if exist CheckingVCLib2_Done.tag (
ECHO !DATE! !TIME![Log TRACE] CheckingVCLib2_Done.tag found. No
need to call :CheckingVCLib2 again. >>%LogPath%
) else (
ECHO !DATE! !TIME![Log TRACE] This is offline installation
process call :CheckingVCLib2 x64 >>%LogPath%
call :CheckingVCLib2 x64 >>%LogPath% 2>&1
ECHO !DATE! !TIME![Log TRACE] Retry to install, goto :InstallUWP
>>%LogPath%
ECHO !DATE! !TIME![Log TRACE] Retry to install, goto :InstallUWP
>CheckingVCLib2_Done.tag
goto :InstallUWP
)
) else (
ECHO !DATE! !TIME![Log TRACE] This is online process. No need to
call :CheckingVCLib2 >>%LogPath%
)
ECHO !DATE! !TIME![Log TRACE] Return code is [%DISMErrCode%], pop up error
message to remind user. >>%LogPath%
call :ErrorMsg
) else (
ECHO !DATE! !TIME![Log TRACE] Return code is [%DISMErrCode%], leave. >>
%LogPath%
)
:END
if exist "%temp%\scratchdir" rd /s /q "%temp%\scratchdir"
popd
SETLOCAL DISABLEDELAYEDEXPANSION
ECHO %DATE% %TIME%[Log LEAVE] ============ %~dpnx0 ============ >> %LogPath%
ECHO.>>%LogPath%
exit /b 0
:GetParameter
:GetPackagePath_Start
REM Prepare PackagePath
:Method1
ECHO %DATE% %TIME%[Log TRACE] dir /s /b *.appxbundle >> %LogPath%
dir /s /b *.appxbundle >> %LogPath% 2>&1
(for /f "delims=" %%d in ('dir /s /b *.appxbundle') do (
set packagepath=%%d
))>NUL 2>&1
:Method2
ECHO %DATE% %TIME%[Log TRACE] dir /s /b *.msix >> %LogPath%
dir /s /b *.msix >> %LogPath% 2>&1
(for /f "delims=" %%d in ('dir /s /b *.msix') do (
set packagepath=%%d
))>NUL 2>&1
:Method3
ECHO %DATE% %TIME%[Log TRACE] dir /s /b *.msixbundle >> %LogPath%
dir /s /b *.msixbundle >> %LogPath% 2>&1
(for /f "delims=" %%d in ('dir /s /b *.msixbundle') do (
set packagepath=%%d
))>NUL 2>&1
:Method4
ECHO %DATE% %TIME%[Log TRACE] dir /s /b *.appx>> %LogPath% 2>&1
dir /s /b *.appx>%OSDST%\OEM\Appx_list.txt 2>&1
if %errorlevel% neq 0 (
ECHO !DATE! !TIME![Log TRACE] *.appx not found, goto :GetPackagePath_END >>
%LogPath%
goto :GetPackagePath_END
)
type %OSDST%\OEM\Appx_list.txt >> %LogPath%
ECHO %DATE% %TIME%[Log TRACE] Getting Dependency Appx list>>%LogPath%
dir /s /b Microsoft*.appx>%OSDST%\OEM\DependencyAppx_list.txt 2>&1
type %OSDST%\OEM\DependencyAppx_list.txt >>%LogPath%
for /f "delims=" %%f in (%OSDST%\OEM\Appx_list.txt) do (
ECHO
------------------------------------------------------------------------------ >>
%LogPath%
ECHO !DATE! !TIME![Log TRACE] Checking [%%~nf] if main Package... >>%LogPath
%
ECHO !DATE! !TIME![Log TRACE] find /i "%%~nf" %OSDST%\OEM\
DependencyAppx_list.txt>>%LogPath% 2>&1
find /i "%%~nf" %OSDST%\OEM\DependencyAppx_list.txt>>%LogPath% 2>&1
if !errorlevel! neq 0 (
ECHO !DATE! !TIME![Log TRACE] [%%~nxf] did not exist in the %OSDST%\
OEM\DependencyAppx_list.txt, set as PackagePath>>%LogPath%
set PackagePath=%%f
) else (
ECHO !DATE! !TIME![Log TRACE] [%%~nxf] exist in the %OSDST%\OEM\
DependencyAppx_list.txt, not the main package. >>%LogPath%
)
)
:GetPackagePath_END
ECHO %DATE% %TIME%[Log TRACE] PackagePath is [%packagepath%] >> %LogPath%
ECHO.>>%LogPath%
ECHO %DATE% %TIME%[Log TRACE] Merge _x86.appx and _x64.appx For X64 >> %LogPath%
set DependencyPackage_X64=%DependencyPackage_X86%%DependencyPackage_X64%
ECHO %DATE% %TIME%[Log TRACE] After merge DependencyPackage_X64 is
[%DependencyPackage_X64%] >>%LogPath%
ECHO.>>%LogPath%
exit /b 0
:ErrorMsg
if exist %OSDST%\OEM\NAPP\D2D.tag (
ECHO %DATE% %TIME%[Log TRACE] %OSDST%\OEM\NAPP\D2D.tag found, exit /b 0 >>
%LogPath%
exit /b 0
)
ECHO MsgBox "ERROR! Driver UWP Install process failed with ERROR code %DISMErrCode
%",16,"Driver UWP Installation Detection" >"%temp%\ErrorMsg.vbs"
CScript /nologo "%temp%\ErrorMsg.vbs"
CScript /nologo "%temp%\ErrorMsg.vbs"
CScript /nologo "%temp%\ErrorMsg.vbs"
exit /b 0
:CheckingVCLib
:GetVCLibs_Start
SET CheckingVCLib_Now=%TargetVCLib%*_%1*.appx
ECHO -----------------------------------------------------------------
ECHO %DATE% %TIME%[Log TRACE] Current working directory is [!CD!]
ECHO %DATE% %TIME%[Log TRACE] dir /b %CheckingVCLib_Now%
dir /b %CheckingVCLib_Now%
if %errorlevel% neq 0 ECHO %DATE% %TIME%[Log TRACE] dir /b %CheckingVCLib_Now% not
exist, exit /b 0 && exit /b 0
:CheckingVCLib2
:GetVCLibs_Start2
SET CheckingVCLib_Now=%TargetVCLib%*_%1*.appx
SET CheckingWinAppsDir=%TargetVCLib%*_%1*
ECHO -----------------------------------------------------------------
ECHO %DATE% %TIME%[Log TRACE] Current working directory is [!CD!]
ECHO %DATE% %TIME%[Log TRACE] dir /b %CheckingVCLib_Now%
dir /b %CheckingVCLib_Now%
if %errorlevel% neq 0 ECHO %DATE% %TIME%[Log TRACE] dir /b %CheckingVCLib_Now% not
exist, exit /b 0 && exit /b 0