mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-12-06 14:23:41 +00:00
Removed unnecessary installer arguments and ensured installers run with process waiting for completion in postInstall.ps1. Cleaned up setup.iss to remove redundant 'Components' field for PowerShell execution. Minor formatting fix in DownloadUrls.psd1.
160 lines
7.3 KiB
Plaintext
160 lines
7.3 KiB
Plaintext
; @created_on 2020-06-26
|
|
; @updated_on 2025-12-01
|
|
; @author Namhyeon Go <gnh1201@catswords.re.kr> and Catswords OSS contributors.
|
|
|
|
[Setup]
|
|
AppName=WelsonJS
|
|
AppVersion=0.2.7
|
|
WizardStyle=modern
|
|
; DefaultDirName={pf}\{cm:AppName}
|
|
DefaultDirName={commonpf32}\{cm:AppName}
|
|
DefaultGroupName={cm:AppName}
|
|
UninstallDisplayIcon={app}\unins000.exe
|
|
Compression=lzma2
|
|
SolidCompression=yes
|
|
OutputDir=bin\installer
|
|
PrivilegesRequired=admin
|
|
; ArchitecturesInstallIn64BitMode=x64
|
|
RestartIfNeededByRun=no
|
|
DisableStartupPrompt=true
|
|
DisableFinishedPage=true
|
|
DisableReadyMemo=true
|
|
DisableReadyPage=true
|
|
DisableWelcomePage=yes
|
|
DisableDirPage=yes
|
|
DisableProgramGroupPage=yes
|
|
LicenseFile=SECURITY.MD
|
|
ChangesAssociations=yes
|
|
|
|
[Components]
|
|
; Add an optional component for the user to select during installation
|
|
Name: "fileassoc"; Description: "Associate .js files to run with WelsonJS"; Types: full compact custom;
|
|
Name: "artifacts"; Description: "WelsonJS Launcher and Windows Service"; Types: full compact custom;
|
|
Name: "python"; Description: "Download Python Windows embeddable package"; Types: full;
|
|
Name: "curl"; Description: "Download cURL (Universal HTTP client)"; Types: full;
|
|
Name: "websocat"; Description: "Download websocat (Command-line WebSocket client)"; Types: full;
|
|
Name: "yara"; Description: "Download YARA (Binary pattern matching library)"; Types: custom;
|
|
Name: "wamr"; Description: "Download WebAssembly Micro Runtime (Add support *.wasm file)"; Types: custom;
|
|
Name: "tessdata"; Description: "Download Tesseract OCR pre-trained data"; Types: custom;
|
|
Name: "tessdata_best"; Description: "Download the pre-trained Tesseract OCR data (most accurate)"; Types: custom;
|
|
Name: "tessdata_fast"; Description: "Download the pre-trained Tesseract OCR data (faster)"; Types: custom;
|
|
Name: "gtk3runtime"; Description: "Download and install GTK3 runtime for Windows"; Types: custom;
|
|
Name: "gtkserver"; Description: "Download GTK-server (GTK GUI interpreter)"; Types: custom;
|
|
Name: "nmap"; Description: "Download and Nmap and Npcap"; Types: custom;
|
|
Name: "windivert"; Description: "Download WinDivert (Windows Packet Divert)"; Types: custom;
|
|
Name: "android_platform_tools"; Description: "Download Android Platform Tools"; Types: custom;
|
|
|
|
[Registry]
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script"; ValueType: string; ValueData: "{cm:AppName} Script"; Flags: uninsdeletekey
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script\DefaultIcon"; ValueType: string; ValueData: "{app}\app\favicon.ico,0"; Flags: uninsdeletekey
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script\shell"; ValueType: string; ValueData: "open"; Components: artifacts; Flags: uninsdeletevalue
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script\shell\open"; ValueType: string; ValueData: "Run with {cm:AppName}"; Components: artifacts; Flags: uninsdeletevalue
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script\shell\open\command"; ValueType: string; ValueData: """{userappdata}\{cm:AppName}\bin\WelsonJS.Launcher.exe"" --file ""%1"""; Components: artifacts; Flags: uninsdeletevalue
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script\ScriptEngine"; ValueType: string; ValueData: "JScript"; Flags: uninsdeletevalue
|
|
Root: HKCR; Subkey: "{cm:AppName}.Script\ScriptHostEncode"; ValueType: string; ValueData: "{{85131630-480C-11D2-B1F9-00C04F86C324}}"; Flags: uninsdeletevalue
|
|
Root: HKCR; Subkey: ".js"; ValueType: string; ValueData: "{cm:AppName}.Script"; Components: fileassoc; Flags: uninsdeletevalue;
|
|
|
|
[Files]
|
|
Source: "app.js"; DestDir: "{app}";
|
|
Source: "app.hta"; DestDir: "{app}";
|
|
Source: "LICENSE"; DestDir: "{app}";
|
|
Source: "LICENSE_MSRL"; DestDir: "{app}";
|
|
Source: "*.md"; DestDir: "{app}";
|
|
Source: "bootstrap.bat"; DestDir: "{app}";
|
|
Source: "uriloader.js"; DestDir: "{app}";
|
|
Source: "webloader.js"; DestDir: "{app}";
|
|
Source: "testloader.js"; DestDir: "{app}";
|
|
Source: "encryptor.js"; DestDir: "{app}";
|
|
Source: "bootstrap.js"; DestDir: "{app}";
|
|
Source: "settings.example.ini"; DestDir: "{app}";
|
|
Source: "defaultService.example.js"; DestDir: "{app}";
|
|
Source: "installService.bat"; DestDir: "{app}";
|
|
Source: "uninstallService.bat"; DestDir: "{app}";
|
|
Source: "postInstall.ps1"; DestDir: "{app}";
|
|
Source: "helloworld.*"; DestDir: "{app}";
|
|
Source: "app\*"; DestDir: "{app}/app"; Flags: ignoreversion recursesubdirs;
|
|
Source: "lib\*"; DestDir: "{app}/lib"; Flags: ignoreversion recursesubdirs;
|
|
; Source: "bin\*"; Excludes: "installer\*"; DestDir: "{app}/bin"; Flags: ignoreversion recursesubdirs;
|
|
Source: "data\*"; Excludes: "*-apikey.txt"; DestDir: "{app}/data"; Flags: ignoreversion recursesubdirs;
|
|
; Source: "node_modules\*"; DestDir: "{app}/node_modules"; Flags: ignoreversion recursesubdirs;
|
|
; Source: "bower_components\*"; DestDir: "{app}/node_modules"; Flags: ignoreversion recursesubdirs;
|
|
|
|
[Dirs]
|
|
Name: "{app}\tmp";
|
|
|
|
; [InstallDelete]
|
|
; Type: files; Name: "{app}\settings.ini"
|
|
; Type: files; Name: "{app}\defaultService.js"
|
|
|
|
[Icons]
|
|
Name: "{group}\Start {cm:AppName} Launcher"; Filename: "{userappdata}\{cm:AppName}\bin\WelsonJS.Launcher.exe"; Components: artifacts; AfterInstall: SetElevationBit('{group}\Start {cm:AppName} Launcher.lnk');
|
|
Name: "{group}\Test {cm:AppName}"; Filename: "{app}\bootstrap.bat"; AfterInstall: SetElevationBit('{group}\Test {cm:AppName}.lnk');
|
|
Name: "{group}\Uninstall {cm:AppName}"; Filename: "{uninstallexe}"; AfterInstall: SetElevationBit('{group}\Uninstall {cm:AppName}.lnk');
|
|
|
|
[Run]
|
|
Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -NoProfile -File ""{app}\postInstall.ps1"" -TelemetryProvider posthog -TelemetryApiKey ""{cm:PostHogApiKey}"" -Version ""{cm:AppVersion}"" -DistinctId ""{computername}"" -Components ""{code:GetSelectedComponents}"""; WorkingDir: "{app}"; Flags: waituntilterminated
|
|
Filename: {app}\installService.bat; Components: artifacts; Flags: nowait
|
|
Filename: "{userappdata}\{cm:AppName}\bin\WelsonJS.Launcher.exe"; Components: artifacts; Flags: nowait
|
|
|
|
[UninstallRun]
|
|
Filename: {app}\uninstallService.bat; Components: artifacts; Flags: waituntilterminated
|
|
|
|
[CustomMessages]
|
|
AppName=WelsonJS
|
|
AppVersion=0.2.7.57
|
|
PostHogApiKey=phc_pmRHJ0aVEhtULRT4ilexwCjYpGtE9VYRhlA05fwiYt8
|
|
|
|
[Code]
|
|
const
|
|
UninstSiteURL = 'https://github.com/gnh1201/welsonjs';
|
|
|
|
function GetSelectedComponents(Value: string): string;
|
|
begin
|
|
Result := WizardSelectedComponents(False);
|
|
end;
|
|
|
|
procedure SetElevationBit(Filename: string);
|
|
var
|
|
Buffer: string;
|
|
Stream: TStream;
|
|
begin
|
|
Filename := ExpandConstant(Filename);
|
|
Log('Setting elevation bit for ' + Filename);
|
|
|
|
Stream := TFileStream.Create(FileName, fmOpenReadWrite);
|
|
try
|
|
Stream.Seek(21, soFromBeginning);
|
|
SetLength(Buffer, 1);
|
|
Stream.ReadBuffer(Buffer, 1);
|
|
Buffer[1] := Chr(Ord(Buffer[1]) or $20);
|
|
Stream.Seek(-1, soFromCurrent);
|
|
Stream.WriteBuffer(Buffer, 1);
|
|
finally
|
|
Stream.Free;
|
|
end;
|
|
end;
|
|
|
|
function GetProgramFiles(Param: string): string;
|
|
begin
|
|
if IsWin64 then Result := ExpandConstant('{commonpf64}')
|
|
else Result := ExpandConstant('{commonpf32}')
|
|
end;
|
|
|
|
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
|
var
|
|
ErrorCode: Integer;
|
|
begin
|
|
if CurUninstallStep = usDone then
|
|
ShellExec('open', UninstSiteURL, '', '', SW_SHOW, ewNoWait, ErrorCode);
|
|
end;
|
|
|
|
procedure CurStepChanged(CurStep: TSetupStep);
|
|
begin
|
|
if CurStep = ssPostInstall then
|
|
begin
|
|
CopyFile(ExpandConstant('{app}\settings.example.ini'), ExpandConstant('{app}\settings.ini'), False);
|
|
CopyFile(ExpandConstant('{app}\defaultService.example.js'), ExpandConstant('{app}\defaultService.js'), False);
|
|
end;
|
|
end;
|
|
|