Extended RegUnloadHives to accept Target= and HKEY= parameters

minor script updates, option to reset source during nuke
This commit is contained in:
Homes32
2022-01-05 18:22:47 -06:00
parent 4b82352807
commit ecf42f3562
10 changed files with 94 additions and 40 deletions

View File

@@ -62,7 +62,7 @@ ExtractAllFiles,%ScriptFile%,Lang,"%TargetPrograms%\%ProgramFolder%\Languages"
// Settings
StrFormat,REPLACE,%ProgramExe%,".exe",".ini",%SettingsFile%
FileCreateBlank,"%TargetPrograms%\%ProgramFolder%\%SettingsFile%",UTF16
FileCreateBlank,"%TargetPrograms%\%ProgramFolder%\%SettingsFile%",Encoding=UTF16
// Toolbar
IniWrite,"%TargetPrograms%\%ProgramFolder%\%SettingsFile%","Toolbar","Skin","Grosberg_24.png"

View File

@@ -175,7 +175,8 @@ End
Else,Message,".NET Framework 3 is already enabled!",Warning
// Dism doesn't always unload hives correctly. Force unload just to make sure WimUnmout doesn't freak out.
ShellExecute,Hide,%Tools%\x86\HiveUnload.exe,"/HKLM /Target:%TargetSystem32%\config"
RegUnloadHives,Force,"Target=%TargetSystem32%\config"
Echo,"Committing changes and unmounting source image:#$x [%SourceInstallWim%]...#$x#$xThis can take awhile, please be patient."
WimUnmount,%MountDir%,COMMIT
@@ -219,7 +220,8 @@ End
Else,Message,".NET Framework 3 is already disabled!",Warning
// Dism doesn't always unload hives correctly. Force unload just to make sure WimUnmout doesn't freak out.
ShellExecute,Hide,%Tools%\x86\HiveUnload.exe,"/HKLM /Target:%TargetSystem32%\config"
RegUnloadHives,Force,"Target=%TargetSystem32%\config"
Echo,"Committing changes and unmounting source image:#$x [%SourceInstallWim%]...#$x#$xThis can take awhile, please be patient."
WimUnmount,%MountDir%,COMMIT

View File

@@ -83,7 +83,7 @@ Else,Set,%DismForceUnsigned%,""
ShellExecute,Hide,"Dism.exe","/image:#$q%TargetDir%#$q /Add-Driver /Driver:#$q%DriversSrc%#$q /recurse /LogPath:#$q%DismLog%#$q%DismForceUnsigned%"
If,Not,%ExitCode%,Equal,0,Halt,"Error: Dism.exe terminated with error code: [%ExitCode%]. Check the log for details."
// Dism doesn't always unload hives correctly. Force unload just to make sure.
ShellExecute,Hide,%Tools%\x86\HiveUnload.exe,"/HKLM /Target:%TargetSystem32%\config"
RegUnloadHives,Force,"Target=%TargetSystem32%\config"
[#ExportHostDrivers-ExportHostDrv#]
// ===============================================================================================================================
@@ -326,11 +326,11 @@ btn_ScriptInfo=,1,8,556,5,25,25,ShowScriptInfo,Help_16.png,True,"__Script Info"
bvl_DriverSource="Driver Packages",1,12,5,50,575,180,8,Bold
lbl_DriverPackagesNote="Please specify the path to the directory containing the drivers you wish to integrate.#$x#$xYou may also use the buttons above to export drivers from your host computer and integrate them into your build.#$x#$xDriver packages must be decompressed (*.ini). Sub-Folders are allowed.",1,1,14,66,559,62,8,Normal
lbl_DriversX86="x86 Drivers",1,1,17,141,70,16,8,Bold
fb_DriversX86=%BaseDir%\Workbench\Drivers\x86,1,13,84,135,458,20,dir,"Title=Select the directory containing your uncompressed x86 (32bit) drivers","__The directory containing uncompressed x86 (32bit) drivers."
btn_BrowseX86=,1,8,549,135,20,20,BrowseX86,OpenFolder_16.png,True,"__Browse"
fb_DriversX86=%BaseDir%\Workbench\Drivers\x86,1,13,84,135,460,20,dir,"Title=Select the directory containing your uncompressed x86 (32bit) drivers","__The directory containing uncompressed x86 (32bit) drivers."
btn_BrowseX86=,1,8,549,135,20,20,BrowseX86,OpenFolder_16.png,True,__Browse
lbl_DriversX64="x64 Drivers",1,1,17,172,70,16,8,Bold
fb_DriversX64=%BaseDir%\Workbench\Drivers\x64,1,13,84,166,458,20,dir,"Title=Select the directory containing your uncompressed x64 (64bit) drivers","__The directory containing uncompressed x64 (64bit) drivers."
btn_BrowseX64=,1,8,549,166,20,20,BrowseX64,OpenFolder_16.png,True,"__Browse"
fb_DriversX64=%BaseDir%\Workbench\Drivers\x64,1,13,84,166,460,20,dir,"Title=Select the directory containing your uncompressed x64 (64bit) drivers","__The directory containing uncompressed x64 (64bit) drivers."
btn_BrowseX64=,1,8,549,166,20,20,BrowseX64,OpenFolder_16.png,True,__Browse
cb_LoadDriversOnStartup="Load Drivers At Startup",1,3,17,200,139,16,True
cb_ForceUnsignedDrivers="Force Install Unsigned Drivers (x64)",0,3,167,200,200,18,False,"__Caution: See Notes below"
cb_PatchDrvInst="Bypass Catalog Signature Check",0,3,380,200,173,18,False,"__Patch Drvinst.exe to disable signature checking for catalog files.#$xAmong other things this allows you to use modified *.inf files."

View File

@@ -32,7 +32,7 @@
Title=Driver Injection
Description=Inject drivers into an existing boot.wim image.
Author=Homes32
Level=10
Level=6
Selected=None
Mandatory=False
Version=1.0.0.0
@@ -64,7 +64,7 @@ If,ExistFile,%fb_WimImage%,Begin
// Inject Drivers
Run,%ScriptFile%,IntegrateDrivers
// Optimize Image (Keep original compression)
Echo,"Optimizing Boot.wim..."
Echo,"Optimizing image..."
WimOptimize,%fb_WimImage%,ReComp=KEEP
// Done.
Echo,"Driver integration finished."
@@ -105,7 +105,7 @@ ShellExecute,Hide,"Dism.exe","/image:#$q%MountDir%#$q /Add-Driver /Driver:#$q%fb
If,Not,%ExitCode%,Equal,0,Halt,"Error: Dism.exe terminated with error code: [%ExitCode%]. Check the log for details."
// Dism doesn't always unload hives correctly. Force unload just to make sure WimUnmout doesn't freak out.
ShellExecute,Hide,%Tools%\x86\HiveUnload.exe,"/HKLM /Target:%MountDir%\Windows\System32\config"
RegUnloadHives,Force,"Target=%MountDir%\Windows\System32\config"
// Unmount
Echo,"Committing changes and unmounting source image:#$x [%fb_WimImage%]...#$x#$xThis can take awhile, please be patient."
@@ -224,7 +224,7 @@ btn_ScriptInfo=,1,8,556,5,25,25,ShowScriptInfo,Help_16.png,True,"__Script Info"
lbl_DriverSourceInfo="Please specify the path to the directory containing the drivers you wish to integrate.#$x#$xDriver packages must be decompressed (*.ini). Sub-Folders are allowed.",1,1,14,66,559,36,8,Normal
bvl_DriverSource="Driver Packages",1,12,5,50,575,180,8,Bold
lbl_DriversSrc=Drivers,1,1,17,111,70,16,8,Bold
fb_DriversSrc=%BaseDir%\Workbench\Drivers\x64,1,13,84,105,458,20,dir,"Title=Select the directory containing your uncompressed drivers","__The directory containing uncompressed drivers."
fb_DriversSrc=%BaseDir%\Workbench\Drivers\x64,1,13,84,105,460,20,dir,"Title=Select the directory containing your uncompressed drivers","__The directory containing uncompressed drivers."
btn_BrowseDriversSrc=,1,8,549,105,20,20,BrowseDrvSource,OpenFolder_16.png,True,__Browse
lbl_WimImageInfo="Please specify the path to your existing boot.wim image.",1,1,14,148,282,16,8,Normal
lbl_WimImage="Wim Image",1,1,17,172,70,16,8,Bold

View File

@@ -30,19 +30,19 @@
[Main]
Title=Ventoy
Description=(v1.0.62) Ventoy is an open source tool used to create bootable USB devices capable of launching multiple ISO/WIM/IMG/VHD(x)/EFI files.
Description=(v1.0.63) Ventoy is an open source tool used to create bootable USB devices capable of launching multiple ISO/WIM/IMG/VHD(x)/EFI files.
Author=Homes32
Level=8
Selected=None
Mandatory=False
Version=1.1.9.0
Date=2021-12-10
Date=2021-12-20
Interface=Interface
[Variables]
%ProgramFolder%="%Workbench%\Ventoy"
%ProgramExe%="Ventoy2Disk.exe"
%ProgramVer%="1.0.62"
%ProgramVer%="1.0.63"
%DownloadURL%=https://github.com/ventoy/Ventoy/releases/download/v%ProgramVer%/ventoy-%ProgramVer%-windows.zip
%SetupFile%="Ventoy.zip"

View File

@@ -115,17 +115,36 @@ RegHiveLoad,Tmp_Install_System,%RegInstallSystem%
// ===============================================================================================================================
// Name...........: RegUnloadHives
// Description....: UnMount Source and Build registry hives.
// Syntax.........: RegUnLoadHives,[FORCE]
// Parameters.....: #1 Force - Force hive unload using HiveUnload.exe
// Syntax.........: RegUnLoadHives[,FORCE][,HKEY=<HKEY>][,Target=<Dir>]
// Parameters.....: Force - Force hive unload using HiveUnload.exe
// HKEY=<HKEY> - Unload hives from this root key. (HKLM, HKU)
// Target=<Dir> - Unload hives from this directory.
// Return values..: ExitCode provided by the HiveUnload.exe application
// 0 - All registry hives unloaded successfully.
// 1 - Not all registry hives could be unloaded.
// 2 - No loaded registry hives were found.
// You must handle ExitCode. The script will not Exit/Halt.
// Author.........: Homes32
// Remarks........:
// Remarks........: HiveUnload.exe is open-source software developed by BlueLife
// Related........:
// ===============================================================================================================================
[_PhoenixAPI_RegUnloadHives]
System,SetLocal
If,#1,Equal,"Force",Begin
If,ExistFile,"%Tools%\x86\HiveUnload.exe",ShellExecute,Hide,"%Tools%\x86\HiveUnload.exe","/HKLM /Target:ALL"
GetParam,1,%Arg1%
GetParam,2,%Arg2%
GetParam,3,%Arg3%
Set,%ForceUnmount%,False
Set,%HKEY%,"HKLM"
Set,%UnloadTarget%,"ALL"
Run,%API%,__PhoenixAPI_RegUnloadHives_Process_Arg,%Arg1%
Run,%API%,__PhoenixAPI_RegUnloadHives_Process_Arg,%Arg2%
Run,%API%,__PhoenixAPI_RegUnloadHives_Process_Arg,%Arg3%
If,%ForceUnmount%,Equal,True,Begin
If,ExistFile,"%Tools%\x86\HiveUnload.exe",ShellExecute,Hide,"%Tools%\x86\HiveUnload.exe","/%HKEY% /Target:%UnloadTarget%"
If,%ExitCode%,Equal,0,Echo,"HiveUnload: All registry hives unloaded successfully."
If,%ExitCode%,Equal,1,Echo,"HiveUnload: Warning: Not all registry hives could be unloaded! Please verify that regedit is not running and try again.",Warn
If,%ExitCode%,Equal,2,Echo,"HiveUnload: No loaded registry hives were found."
@@ -141,6 +160,32 @@ Else,Begin
RegHiveUnload,Tmp_Install_System
End
System,EndLocal
[#__PhoenixAPI_RegUnloadHives_Process_Arg#]
// ===============================================================================================================================
// Name...........: __PhoenixAPI_RegUnloadHives_Process_Arg
// Description....: Process RegUnloadHives optional arguments
// Syntax.........: __PhoenixAPI_RegUnloadHives_Process_Arg,<Arg>
// Parameters.....: #1 Arg - The argument to process
// Return values..:
// Author.........: Homes32
// Remarks........: Internal Function
// Do not call System,SetLocal here. We need this function to run in the same scope as PhoenixAPI_InnoUnpack
// Related........: _PhoenixAPI_RegUnloadHives
// ===============================================================================================================================
[__PhoenixAPI_RegUnloadHives_Process_Arg]
If,#1,Equal,"Force",Set,%ForceUnmount%,True
Else,Begin
StrFormat,Split,#1,"=",1,%ArgKey%
If,Not,%ArgKey%,Equal,"",Begin
If,%ArgKey%,Equal,"HKEY",StrFormat,Split,#1,"=",2,%HKEY%
Else,If,%ArgKey%,Equal,"TARGET",StrFormat,Split,#1,"=",2,%UnloadTarget%
Else,Halt,"SYNTAX ERROR: Invalid Argument [#1]"
End
End
[#_PhoenixAPI_RegCopyDriver#]
// ===============================================================================================================================
// Name...........: RegCopyDriver
@@ -319,7 +364,7 @@ System,EndLocal
// Description....: Process InnoUnpack optional arguments
// Syntax.........: __PhoenixAPI_InnoUnpack_Process_Arg,<Arg>
// Parameters.....: #1 Arg - The argument to process
// Return values..: #r - Command line string to be passed to Innounp.exe
// Return values..:
// Author.........: Homes32
// Remarks........: Internal Function
// Do not call System,SetLocal here. We need this function to run in the same scope as PhoenixAPI_InnoUnpack

View File

@@ -34,7 +34,7 @@ Author=Homes32
Description=Run your ISO in VMware Player/Workstation
Version=1.1.1.0
Level=9
Selected=True
Selected=False
Mandatory=False
NoWarning=False
Date=2021-11-28

View File

@@ -69,7 +69,8 @@ Run,%ScriptFile%,ToggleLinuxSubsystem
Run,%ScriptFile%,TogglePrintComponents
// Dism doesn't always unload hives correctly. Force unload just to make sure WimUnmout doesn't freak out.
ShellExecute,Hide,%Tools%\x86\HiveUnload.exe,"/HKLM /Target:%TargetSystem32%\config"
RegUnloadHives,Force,"Target=%TargetSystem32%\config"
Echo,"Committing changes and unmounting source image:#$x [%SourceInstallWim%]...#$x#$xThis can take awhile, please be patient."
WimUnmount,%MountDir%,COMMIT

View File

@@ -36,7 +36,6 @@ Version=1.0.0.0
Level=10
Selected=None
Date=2020-07-27
Interface=Interface
Mandatory=False
[Variables]
@@ -277,15 +276,15 @@ Message,"The Script Factory generates a skeleton framework, giving you a startin
// ===============================================================================================================================
[Interface]
btn_CreateScript="Create Script",1,8,5,5,100,25,CreateScript,play-hot.png,True
btn_SetDefaultOptions=,1,8,390,5,25,25,SetDefaultOptions,SetDefaults_16.png,False,"__Restore Defaults"
btn_SetDefaultOptions=,1,8,390,5,25,25,SetDefaultOptions,SetDefaults_16.png,True,"__Restore Defaults"
btn_AdvancedOptions=,1,8,420,5,25,25,ToggleAdvancedOptions,Advanced_16.png,True,"__Show Advanced Options"
btn_ScriptInfo=,1,8,450,5,25,25,ShowScriptInfo,Help_16.png,True,"__Script Info"
bvl_ScriptTemplate=Template,1,12,5,50,472,71,8,Bold
cmb_ScriptTemplate="Simple Download App",1,4,20,69,200,21,"Blank Script","Simple Download App","Simple Embedded App",_UpdateTemplateDescription_,True
lbl_TemplateDescr="A simple script that downloads a program at build time.",1,1,20,100,447,16,8,Normal
lbl_TemplateDescr="A simple script that downloads programs at build time.",1,1,20,100,447,16,8,Normal
bvl_ScriptProperties="General Script Information",1,12,5,140,472,157,8,Bold
txt_ScriptTitle="Script Title",1,0,20,170,200,21,
txt_ScriptAuthor="Script Author",1,0,235,170,200,21,
txt_ScriptAuthor="Script Author",1,0,265,170,200,21,
txt_ScriptDescr="Script Description",1,0,20,215,444,21,
lbl_ScriptLevel="Script Level",1,1,20,245,190,16,8,Normal
lbl_AdvancedMode="Advanced Mode",0,1,135,245,92,16,8,Bold

View File

@@ -237,6 +237,9 @@ System,EndLocal
// ===============================================================================================================================
[NukeProject]
Echo,"Nuke Project Files..."
If,QUESTION,"Nuke PhoenixPE#$x#$xThis operation will obliterate all Target, ISO, Temp, Downloaded, and Cached files and return PhoenixPE to a clean build environment.#$x#$x Are you sure you want to continue?",Begin
Echo,"Cleaning up files from the previous build..."
DirDeleteEx,%TargetDir%
DirDeleteEx,%ProjectTemp%
@@ -253,6 +256,10 @@ Echo,"Clearing the Output directories..."
DirDeleteEx,%ISODir%
DirDeleteEx,%OutputDir%
Echo,"Environment cleanup complete."
If,QUESTION,"Would you like to reset Source Config to defaults? (Recommended)",Exec,"%ProjectDir%\100-ConfigSource.script","SetDefaultOptions"
End
[#SwitchToMainInterface#]
// ===============================================================================================================================
// Name...........: SwitchToMainInterface
@@ -315,7 +322,7 @@ System,RefreshInterface
// ===============================================================================================================================
[Interface]
lbl_Welcome=Welcome!,1,1,5,10,200,25,16,Bold
btn_Nuke=,1,8,288,5,25,25,NukeProject,Toxic.png,False,"__Obliterate all Target, ISO, Temp, Downloaded, and Cached Files.#$xUse this if you want to reset to a clean build environment.#$x#$xThe following folders and any files they contain will be destroyed:#$x - %TargetDir%#$x - %ISODir%#$x - %OutputDir%#$x - %ProjectCache%#$x - %ProgramsCache%#$x - Downloaded Tools (BCDEdit/DISM/Oscdimg)"
btn_Nuke=,1,8,288,5,25,25,NukeProject,Toxic.png,False,"__Obliterate all Target, ISO, Temp, Downloaded, and Cached files.#$xUse this if you want to reset to a clean build environment.#$x#$xThe following folders and any files they contain will be destroyed:#$x - %TargetDir%#$x - %ISODir%#$x - %OutputDir%#$x - %ProjectCache%#$x - %ProgramsCache%#$x - Downloaded Tools (BCDEdit/DISM/Oscdimg)"
btn_Options=,1,8,320,5,25,25,SwitchToOptionsInterface,Advanced_16.png,True,"__Project Options"
btn_About=,1,8,352,5,25,25,SwitchToAboutInterface,Help_16.png,True,"__About PhoenixPE"
rtf_BuildInstructions=HowToBuild.rtf,1,6,5,50,373,375