From fb977f1978aaa8548846196930c770bc72e9c298 Mon Sep 17 00:00:00 2001 From: DSR! Date: Thu, 9 Mar 2023 14:28:18 -0300 Subject: [PATCH] Add UnPacking extra installer code --- extras/unpacking/installer/icon.ico | Bin 0 -> 6623 bytes extras/unpacking/installer/sections/cli.iss | 70 +++++++++++++ .../installer/sections/unpacking.iss | 51 +++++++++ .../unpacking/installer/sections/updater.iss | 29 ++++++ extras/unpacking/installer/setup.iss | 98 ++++++++++++++++++ 5 files changed, 248 insertions(+) create mode 100644 extras/unpacking/installer/icon.ico create mode 100644 extras/unpacking/installer/sections/cli.iss create mode 100644 extras/unpacking/installer/sections/unpacking.iss create mode 100644 extras/unpacking/installer/sections/updater.iss create mode 100644 extras/unpacking/installer/setup.iss diff --git a/extras/unpacking/installer/icon.ico b/extras/unpacking/installer/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ced7cd06997dfb55e3bef9426a38ded14926a4e5 GIT binary patch literal 6623 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 0 then + exit; + + { App string to the end of the path variable } + Paths := Paths + ';'+ Path //+';' + + { Overwrite (or create if missing) path environment variable } + if RegWriteStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', Paths) then + Log(Format('The [%s] added to PATH: [%s]', [Path, Paths])) + else + Log(Format('Error while adding the [%s] to PATH: [%s]', [Path, Paths])); +end; + +procedure EnvRemovePath(Path: string); +var + Paths: string; + P: Integer; +begin + { Skip if registry entry not exists } + if not RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', Paths) then + exit; + + { Skip if string not found in path } + P := Pos(';' + Uppercase(Path) + ';', ';' + Uppercase(Paths) + ';'); + if P = 0 then + exit; + + { Update path variable } + Delete(Paths, P - 1, Length(Path) + 1); + + { Overwrite path environment variable } + if RegWriteStringValue(HKEY_CURRENT_USER, 'Environment', 'Path', Paths) then + Log(Format('The [%s] removed from PATH: [%s]', [Path, Paths])) + else + Log(Format('Error while removing the [%s] from PATH: [%s]', [Path, Paths])); +end; + +{ +;;;;; AUTOGENERATED! +;;;;;;;;;;;;;;;;;;;;;;;;; +} +procedure CurStepChanged(CurStep: TSetupStep); +begin + if CurStep = ssPostInstall then + begin + if WizardIsComponentSelected('unpacking\novmp') then EnvAddPath(ExpandConstant('{#MyAppToolsFolder}') + '\UnPacking\NoVmp'); + if WizardIsComponentSelected('unpacking\vmunprotect') then EnvAddPath(ExpandConstant('{#MyAppToolsFolder}') + '\UnPacking\VMUnprotect'); + if WizardIsComponentSelected('unpacking\vmunprotectdumper') then EnvAddPath(ExpandConstant('{#MyAppToolsFolder}') + '\UnPacking\VMUnprotectDumper'); + end +end; + +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +begin + if CurUninstallStep = usPostUninstall then + begin + EnvRemovePath(ExpandConstant('{#MyAppToolsFolder}') + '\UnPacking\NoVmp'); + EnvRemovePath(ExpandConstant('{#MyAppToolsFolder}') + '\UnPacking\VMUnprotect'); + EnvRemovePath(ExpandConstant('{#MyAppToolsFolder}') + '\UnPacking\VMUnprotectDumper'); + end +end; diff --git a/extras/unpacking/installer/sections/unpacking.iss b/extras/unpacking/installer/sections/unpacking.iss new file mode 100644 index 0000000..56037f8 --- /dev/null +++ b/extras/unpacking/installer/sections/unpacking.iss @@ -0,0 +1,51 @@ +; Magicmida +[Components] +Name: "unpacking\magicmida"; Description: "Magicmida"; Types: full; + +[Files] +Source: "{#MySrcDir}\toolkit\UnPacking\Magicmida\*"; DestDir: "{#MyAppToolsFolder}\UnPacking\Magicmida"; Components: "unpacking\magicmida"; Flags: ignoreversion recursesubdirs createallsubdirs; + +[Icons] +Name: "{group}\Magicmida"; Filename: "{#MyAppToolsFolder}\UnPacking\Magicmida\Magicmida.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\Magicmida"; Components: "unpacking\magicmida"; +Name: "{#MyAppBinsFolder}\sendto\sendto\UnPacking\Magicmida"; Filename: "{#MyAppToolsFolder}\UnPacking\Magicmida\Magicmida.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\Magicmida"; Components: "unpacking\magicmida"; + + + +; NoVmp +[Components] +Name: "unpacking\novmp"; Description: "NoVmp"; Types: full; + +[Files] +Source: "{#MySrcDir}\toolkit\UnPacking\NoVmp\*"; DestDir: "{#MyAppToolsFolder}\UnPacking\NoVmp"; Components: "unpacking\novmp"; Flags: ignoreversion recursesubdirs createallsubdirs; + +[Icons] +Name: "{group}\NoVmp x64"; Filename: "{sys}\cmd.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\NoVmp"; Components: "unpacking\novmp"; Parameters: "/K ""{#MyAppToolsFolder}\UnPacking\NoVmp\NoVmp.exe"""; IconFilename: "{#MyAppToolsFolder}\UnPacking\NoVmp\NoVmp.exe"; Check: Is64BitInstallMode; +Name: "{#MyAppBinsFolder}\sendto\sendto\UnPacking\NoVmp x64"; Filename: "{sys}\cmd.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\NoVmp"; Components: "unpacking\novmp"; Parameters: "/K ""{#MyAppToolsFolder}\UnPacking\NoVmp\NoVmp.exe"""; IconFilename: "{#MyAppToolsFolder}\UnPacking\NoVmp\NoVmp.exe"; Check: Is64BitInstallMode; + + + +; VMUnprotect +[Components] +Name: "unpacking\vmunprotect"; Description: "VMUnprotect"; Types: full; + +[Files] +Source: "{#MySrcDir}\toolkit\UnPacking\VMUnprotect\*"; DestDir: "{#MyAppToolsFolder}\UnPacking\VMUnprotect"; Components: "unpacking\vmunprotect"; Flags: ignoreversion recursesubdirs createallsubdirs; + +[Icons] +Name: "{group}\VMUnprotect"; Filename: "{sys}\cmd.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\VMUnprotect"; Components: "unpacking\vmunprotect"; Parameters: "/K ""{#MyAppToolsFolder}\UnPacking\VMUnprotect\VMUnprotect.exe"""; IconFilename: "{#MyAppToolsFolder}\UnPacking\VMUnprotect\VMUnprotect.exe"; +Name: "{#MyAppBinsFolder}\sendto\sendto\UnPacking\VMUnprotect"; Filename: "{sys}\cmd.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\VMUnprotect"; Components: "unpacking\vmunprotect"; Parameters: "/K ""{#MyAppToolsFolder}\UnPacking\VMUnprotect\VMUnprotect.exe"""; IconFilename: "{#MyAppToolsFolder}\UnPacking\VMUnprotect\VMUnprotect.exe"; + + + +; VMUnprotectDumper +[Components] +Name: "unpacking\vmunprotectdumper"; Description: "VMUnprotectDumper"; Types: full; + +[Files] +Source: "{#MySrcDir}\toolkit\UnPacking\VMUnprotectDumper\*"; DestDir: "{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper"; Components: "unpacking\vmunprotectdumper"; Flags: ignoreversion recursesubdirs createallsubdirs; + +[Icons] +Name: "{group}\VMUnprotectDumper"; Filename: "{sys}\cmd.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper"; Components: "unpacking\vmunprotectdumper"; Parameters: "/K ""{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper\VMUnprotectDumper.exe"""; IconFilename: "{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper\VMUnprotectDumper.exe"; +Name: "{#MyAppBinsFolder}\sendto\sendto\UnPacking\VMUnprotectDumper"; Filename: "{sys}\cmd.exe"; WorkingDir: "{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper"; Components: "unpacking\vmunprotectdumper"; Parameters: "/K ""{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper\VMUnprotectDumper.exe"""; IconFilename: "{#MyAppToolsFolder}\UnPacking\VMUnprotectDumper\VMUnprotectDumper.exe"; + + diff --git a/extras/unpacking/installer/sections/updater.iss b/extras/unpacking/installer/sections/updater.iss new file mode 100644 index 0000000..a62c701 --- /dev/null +++ b/extras/unpacking/installer/sections/updater.iss @@ -0,0 +1,29 @@ +; Updater +[Components] +Name: "updater\main"; Description: "Updater"; Types: full compact; + +[Files] +Source: "{#MySrcDir}\..\..\bin\updater\*"; DestDir: "{#MyAppBinsFolder}\updater"; Components: "updater\main"; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: BeforeInstallScript; +Source: "{#MySrcDir}\..\..\bin\hstart\*"; Destdir: "{#MyAppBinsFolder}\hstart\"; Components: "updater\main"; Flags: ignoreversion recursesubdirs createallsubdirs; + +[Icons] +Name: "{group}\Toolkit Updater"; Filename: "{#MyAppBinsFolder}\updater\updater.exe"; WorkingDir: "{#MyAppBinsFolder}\updater"; Components: "updater\main"; +Name: "{userdesktop}\{#MyAppNameOriginal}\Toolkit Updater"; Filename: "{#MyAppBinsFolder}\updater\updater.exe"; WorkingDir: "{#MyAppBinsFolder}\updater"; Components: "updater\main"; + +; Fix default update config +[INI] +Filename: {#MyAppBinsFolder}\updater\tools.ini; Section: UpdaterConfig; Key: disable_clean; String: True; Components: "updater\main"; +Filename: {#MyAppBinsFolder}\updater\tools.ini; Section: UpdaterConfig; Key: disable_repack; String: True; Components: "updater\main"; + + + +; Add Task Schedule +[Components] +Name: "updater\task"; Description: "Add Updater Task Schedule"; Types: full compact; + +[Run] +Filename: "{sys}\schtasks.exe"; Parameters: "/Delete /TN IndetectablesToolkit_Updater /F"; Components: "updater\task"; Flags: runhidden; +Filename: "{sys}\schtasks.exe"; Parameters: "/CREATE /SC WEEKLY /TN IndetectablesToolkit_Updater /TR ""'{#MyAppBinsFolder}\hstart\hstart.exe' /NOCONSOLE '{#MyAppBinsFolder}\updater\updater.exe'"""; Components: "updater\task"; Flags: runhidden; + +[UninstallRun] +Filename: "{#MyAppBinsFolder}\hstart\hstart.exe"; Parameters: "/ELEVATE ""{sys}\schtasks.exe /Delete /TN IndetectablesToolkit_Updater /F"""; Components: "updater\task"; Flags: runhidden; diff --git a/extras/unpacking/installer/setup.iss b/extras/unpacking/installer/setup.iss new file mode 100644 index 0000000..0d6dc82 --- /dev/null +++ b/extras/unpacking/installer/setup.iss @@ -0,0 +1,98 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "Indetectables Toolkit Extras: Unpacking" +#define MyAppNameOriginal "Indetectables Toolkit" +#define MyAppVersion "2023.3" +#define MyAppPublisher "Indetectables" +#define MyAppURL "https://www.indetectables.net/" +#define MyAppToolsFolder "{app}\toolkit" +#define MyAppBinsFolder "{app}\bin" +#define MySrcDir "C:\code\toolkit\extras\unpacking" +#define MyOutputDir "C:\code" + +[Setup] +AppId={{968CE526-6B32-4998-84F9-6CDD43CFBC2C} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +VersionInfoVersion={#MyAppVersion} +AppVerName={#MyAppName} - {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={sd}\{#MyAppNameOriginal} +DefaultGroupName={#MyAppNameOriginal} +PrivilegesRequired=admin +;PrivilegesRequiredOverridesAllowed=dialog +OutputBaseFilename=Toolkit_{#MyAppVersion}_Extras_Unpacking +Compression=lzma2/max +SolidCompression=yes +WizardStyle=modern +ArchitecturesInstallIn64BitMode=x64 +SetupIconFile="{#MySrcDir}\installer\icon.ico" +OutputDir={#MyOutputDir} +Uninstallable=no +DirExistsWarning=no + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" +Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl" +Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl" +Name: "portuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" + +[CustomMessages] +english.FolderValidationError=The toolkit was not found in the selected folder. You must install it before you can continue. +spanish.FolderValidationError=No se ha encontrado el kit de herramientas en la carpeta seleccionada. Debe instalarlo antes de continuar. +catalan.FolderValidationError=El conjunt d'eines no s'ha trobat a la carpeta seleccionada. Heu d'instal·lar-lo abans de poder continuar. +portuguese.FolderValidationError=O conjunto de ferramentas não foi encontrado na pasta seleccionada. Deve ser instalado antes de poder continuar. + +[Components] +Name: "unpacking"; Description: "UnPacking"; Types: full; +#include "sections\unpacking.iss" + +[Components] +Name: "updater"; Description: "Tools auto updater"; Types: full; +#include "sections\updater.iss" + + +;;; etc +[Run] +; Configure installed tools +Filename: "{#MyAppBinsFolder}\updater\bin\auto-config-ini.exe"; Parameters: "/FOLDER={#MyAppBinsFolder}\updater /TYPE=clean"; Flags: runhidden; + +; Sync tools versions +Filename: "{#MyAppBinsFolder}\updater\bin\auto-config-ini.exe"; Parameters: "/FOLDER={#MyAppBinsFolder}\updater /TYPE=sync"; Flags: runhidden; + +[code] +function GetFileName(const FileName: string): string; +begin + Result := ExpandConstant('{#MyAppBinsFolder}\updater\' + FileName); +end; + +procedure BeforeInstallScript(); +begin + if FileExists(GetFileName('tools.ini')) then + begin + RenameFile(GetFileName('tools.ini'), GetFileName('tools.ini.old')); + end; +end; + +function NextButtonClick(PageId: Integer): Boolean; +begin + Result := True; + if (PageId = wpSelectDir) and not FileExists(ExpandConstant('{app}\CHANGELOG.md')) then + begin + MsgBox(ExpandConstant('{cm:FolderValidationError}'), mbError, MB_OK); + Result := False; + exit; + end; +end; + +procedure CurStepChanged(CurStep: TSetupStep); +begin + if (CurStep = ssDone) and FileExists(GetFileName('tools.ini.old')) then + begin + DeleteFile(GetFileName('tools.ini.old')); + end; +end;