FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   INNO TROUBLESHOOT - Questions Here (https://fileforums.com/showthread.php?t=93193)

KaktoR 30-07-2021 14:45

Something like this?
https://github.com/namazso/OpenHashTab

Edit: Scratch it, it's just a shellext installer...

Maybe ask peterf if he got some spare time to add it into ishash

no.safe 02-08-2021 06:15

Can Help Me ?
 
http://www41.zippyshare.com/v/i3eMQfbO/file.html

Carldric Clement 12-08-2021 08:34

I didn't expect it before. the newest version of Inno Setup 6 was no longer code of Application.ProcessMessanges; Is there any similar this code?

DiCaPrIo 12-08-2021 09:01

Quote:

Originally Posted by Carldric Clement (Post 493634)
I didn't expect it before. the newest version of Inno Setup 6 was no longer code of Application.ProcessMessanges; Is there any similar this code?

function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external '[email protected] stdcall';
function TranslateMessage(const lpMsg: TMsg): BOOL; external '[email protected] stdcall';
function DispatchMessage(const lpMsg: TMsg): Longint; external '[email protected] stdcall';

procedure AppProcessMessages;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, 1) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;

Carldric Clement 12-08-2021 09:12

Quote:

Originally Posted by DiCaPrIo (Post 493635)
function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external '[email protected] stdcall';
function TranslateMessage(const lpMsg: TMsg): BOOL; external '[email protected] stdcall';
function DispatchMessage(const lpMsg: TMsg): Longint; external '[email protected] stdcall';

procedure AppProcessMessages;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, 0, 0, 1) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;

almost but there is one thing was unknown type: TMsg; :)

Cesar82 12-08-2021 09:34

Quote:

Originally Posted by Carldric Clement (Post 493636)
almost but there is one thing was unknown type: TMsg; :)

Code:

type
  TMsg = record hWnd: HWND; message: LongWord; wParam: Longint; lParam: Longint; Time: LongWord; pt: TPoint; end;


1234567890123 17-08-2021 01:54

Is there a way to make a listener (code, etc) that listens to get file size in an inno setup? My goal is to show progress in nanozip. It will listen to the nanozip output file with a time interval and get to the rate of total file size to the current size.

Masquerade 18-08-2021 10:11

Is there a way to detect the amount of CPU threads / cores there are and do something accordingly?

Eg.

if CPU_THREADS = 6 then
begin
do_stuff
end else begin
do_other_stuff
end;

Asking because some multithreading tools crash when dealing with 6 or 12 threads.

DiCaPrIo 18-08-2021 11:02

Quote:

Originally Posted by Masquerade (Post 493700)
Is there a way to detect the amount of CPU threads / cores there are and do something accordingly?

Eg.

if CPU_THREADS = 6 then
begin
do_stuff
end else begin
do_other_stuff
end;

Asking because some multithreading tools crash when dealing with 6 or 12 threads.

Code:

function GetSysCores(): Integer;
var
  WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
  WbemObjectSet := WbemServices.ExecQuery('Select NumberOfCores from Win32_Processor');
  WbemObject := WbemObjectSet.ItemIndex(0);
  Result := WbemObject.Properties_.Item('NumberOfCores').Value;
  WbemLocator:=Unassigned;
  WbemServices:=Unassigned;
  WbemObjectSet:=Unassigned;
  WbemObject:=Unassigned;
end;

function GetSysThreads(): Integer;
var
  WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
  WbemObjectSet := WbemServices.ExecQuery('Select NumberOfLogicalProcessors from Win32_Processor');
  WbemObject := WbemObjectSet.ItemIndex(0);
  Result := WbemObject.Properties_.Item('NumberOfLogicalProcessors').Value;
  WbemLocator:=Unassigned;
  WbemServices:=Unassigned;
  WbemObjectSet:=Unassigned;
  WbemObject:=Unassigned;
end;


Masquerade 18-08-2021 11:37

DiCaPrIo
So I would put if GetSysCores = 6 in the if loop after calling the function?

DiCaPrIo 18-08-2021 11:56

Quote:

Originally Posted by Masquerade (Post 493702)
DiCaPrIo
So I would put if GetSysCores = 6 in the if loop after calling the function?

Code:

procedure InitializeWizard();
var Cores,Threads:Integer;
begin
  Cores:=GetSysCores;
  Threads:=GetSysThreads;
  if Cores = 6 then begin
  //yourcode
  end;
  if Threads = 6 then begin
  //yourcode
  end;
end;


Cesar82 18-08-2021 13:09

Quote:

Originally Posted by Masquerade (Post 493702)
DiCaPrIo
So I would put if GetSysCores = 6 in the if loop after calling the function?

As the function returns an integer value I think I can use it directly without declaring variables.
if GetSysCores = 6 then
begin

end;

The function can also be simplified using variables of type variant so you can get any supported value just by changing the string you want to search for.
Code:

function GetSysInfo(const WMIClass, WMIProperty: String): Variant;
var
 
WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
  WbemObjectSet := WbemServices.ExecQuery('Select ' + WMIProperty + ' from ' + WMIClass);
  if (not VarIsNull(WbemObjectSet)) and (WbemObjectSet.Count > 0) then begin
   
WbemObject := WbemObjectSet.ItemIndex(0);
    if not VarIsNull(WbemObject) then
     
Result := WbemObject.Properties_.Item(WMIProperty).Value;
  end;
end;

procedure GetFreeMemory(var Free, Total: Extended);
begin
 
Total := GetSysInfo('Win32_OperatingSystem', 'TotalVisibleMemorySize');
  Free := GetSysInfo('Win32_OperatingSystem ', 'FreePhysicalMemory');
end;

function CPUCores: Integer;
begin
 
Result := GetSysInfo('Win32_Processor', 'NumberOfCores');
end;

function CPUThreads: Integer;
begin
 
Result := GetSysInfo('Win32_Processor', 'NumberOfLogicalProcessors');
end;


You can also use the API if you prefer to get Threads.
Code:

type
 
TSystemInfo = record
   
wProcessorArchitecture: Word;
    wReserved: Word;
    dwPageSize: DWORD;
    lpMinimumApplicationAddress: Integer;
    lpMaximumApplicationAddress: Integer;
    dwActiveProcessorMask: DWORD;
    dwNumberOfProcessors: DWORD;
    dwProcessorType: DWORD;
    dwAllocationGranularity: DWORD;
    wProcessorLevel: Integer;
    wProcessorRevision: Word;
  end;

procedure GetSystemInfo(var lpSystemInfo: TSystemInfo);
  external '[email protected] stdcall delayload';

function GetCPUThreads: Integer;
var
 
SysInfo: TSystemInfo;
begin
 
GetSystemInfo(SysInfo);
  Result := SysInfo.dwNumberOfProcessors;
end;


L33THAK0R 19-08-2021 00:49

Has anyone had an installer made using inno setup just soft-lock consistently? Trying to unpack an archive but it consistently gets stuck on this one file, refusing to progress any further, the funny thing is though, no error codes are displayed, the applications "elapsed time" function continues to run, with CPU & Disk utilisation dropping to 0%, I'm honestly stumped on this one.

Masquerade 19-08-2021 01:53

L33THAK0R
This appears an issue with the decompressor you are using and not inno setup itself.

L33THAK0R 19-08-2021 04:36

Quote:

Originally Posted by Masquerade (Post 493709)
L33THAK0R
This appears an issue with the decompressor you are using and not inno setup itself.

Ah grim, well that narrows it down to 2 issues then. Fingers crossed I can get it working! I have a feeling it might be due to the assets I ripped, was a bit messy with ripping shit.

L33THAK0R 29-09-2021 21:15

Just as a preface, I originally posted this in the "ASIS" thread, but I reckon it might be more applicable here.

So I have a handful of repacks which have selective installs for a collection of titles, with each having its own shortcut to be placed on the users Desktop, should they select this as an option. Currently however, regardless of the end-users selection a shortcut for each entry made for the application is placed on the desktop, even if the target file is not present. It's not a critical issue but it is a slight annoyance.

My proposed solution, as detailed below, was to use a function named "RemoveShortcut", which is used for the uninstaller generated for a given install, as can be seen here:

Code:

[UninstallDelete]
Type: filesandordirs; Name: {app}
#sub RemoveShortcut
  #emit "Type: Files; Name: ""{userdesktop}\" + Trim(ReadIni(SourcePath + "\Settings.ini", "Executable" + Str(i), "ShortcutName", "")) + ".lnk"";"
  #emit "Type: Files; Name: ""{userprograms}\" + Trim(ReadIni(SourcePath + "\Settings.ini", "Settings", "ShortcutName", "")) + "\" + Trim(ReadIni(SourcePath + "\Settings.ini", "Executable" + Str(i), "ShortcutName", "")) + ".lnk"";"
#endsub
#for {i = 1; Trim(ReadIni(SourcePath + "\Settings.ini", "Executable" + Str(i), "ShortcutName", "")) != ""; i++} RemoveShortcut

However this doesn't seem to work, with testing of 2 dummy data files (each housing its own target application, as well as a blank file to be used as a indicator that the selected component was present), demonstrating both shortcuts were removed even when installing only one of the selected components. If anyone has any thoughts on this I'd love to hear them. I initially thought I might be able to use a series of batch scripts instead, with one script for the removal of each component to be run post-install present in a "main" data file, with a given components archive having an identical, but blank script to overwrite the valid script, however I found I wasn't able to consistently CD to the userdesktop, since I didn't initially take into account a user having a desktop location at a location outside of their C: drive.

__________________________________________________ __________

ORIGINAL QUESTION:


Hi all,

Got a small question regarding whether my proposed solution could work at all (I'm terribly new to pascal/delphi). I've got a fair few packs that feature selective, multiple-title offerings to the end-user, each with their own, separate executable to launch from (since some are emulated and require a small script to launch the ROM), as well as their own entry under the shortcut section of the "Settings.ini" file used in ASIS (baked into a executable thats just a batch script wrapped in an exe). My issue is that regardless of the component selection, upon extraction of all selected archives, all desktop shortcuts defined within the "settings.ini" are generated (should the option be selected).

My current thought process is using the "RemoveShortcut" function, in the Post-install section of the script to delete the shortcut, if a given .txt file is missing (which would be packed with a given selective offering), like so:

Code:

   
#if ("{app}\_CommonRedist\APPS\APP_1.txt" == "0") && ("{userdesktop}\APP_1.lnk" == "1")
 #for {i = 1; Trim(ReadIni(SourcePath + "\Settings.ini", "Executable" + Str(i), "ShortcutName", "")) != ""} RemoveShortcut
#endif
#if ("{app}\_CommonRedist\APPS\APP_2.txt" == "0") && ("{userdesktop}\APP_2.lnk" == "1")
 #for {i = 2; Trim(ReadIni(SourcePath + "\Settings.ini", "Executable" + Str(i), "ShortcutName", "")) != ""} RemoveShortcut
#endif

However upon testing this both shortcuts were removed even when installing only one of the selected components. Does anyone have any idea why this might be?

Cesar82 20-10-2021 15:57

I would like to know if anyone has a solution to my problem. I would like to display the thumbnail in the taskbar and at the same time include a checkbox to keep the installer window on top (over other windows) if the checkbox is checked. If I use the code from the page below to display the installer thumbnail on the taskbar the property "WizardForm.FormStyle" doesn't work.
Part of the code was obtained from: inno-setup-window-preview-in-taskbar

If anyone can help me, I appreciate it.
Below is a code to better understand my question.
Code:

[Setup]
AppName=My App
AppVersion=1.0
DefaultDirName={{#VER > 0x06000000 ? "common" : ""}pf}\My App
DisableWelcomePage=no
OutputBaseFilename=My_App
OutputDir=.

[ code]
const
 
GW_OWNER = 4;
  GWL_HWNDPARENT = (-8);

function GetWindowLong(Wnd: HWND; nIndex: Integer): Longint; external '[email protected] stdcall delayload';
function SetWindowLong(Wnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external '[email protected] stdcall delayload';
function GetWindow(hWnd: HWND; uCmd: UINT): HWND; external '[email protected] stdcall delayload';

var
 
OnTopCheckBox: TNewCheckBox;
  ////OldParent: Longint;

procedure OnTopCheckBox_OnClick(Sender: TObject);
begin
  if
OnTopCheckBox.Checked then
  begin
   
////SetWindowLong(WizardForm.Handle, GWL_HWNDPARENT, OldParent);
   
WizardForm.FormStyle := fsStayOnTop;
  end else
  begin
   
WizardForm.FormStyle := fsNormal;
    ////SetWindowLong(WizardForm.Handle, GWL_HWNDPARENT, GetWindowLong(GetWindow(WizardForm.Handle, GW_OWNER), GWL_HWNDPARENT));
 
end;
end;

procedure InitializeWizard();
begin
 
////OldParent := GetWindowLong(WizardForm.Handle, GWL_HWNDPARENT);

 
OnTopCheckBox := TNewCheckBox.Create(WizardForm);
  with OnTopCheckBox do begin
   
Parent := WizardForm;
    Caption := 'Keep On Top';
    SetBounds(ScaleX(10), WizardForm.NextButton.Top + ScaleY(2), ScaleX(100), ScaleX(15));
    OnClick := @OnTopCheckBox_OnClick;
  end;

  { work if disable this line }
 
SetWindowLong(WizardForm.Handle, GWL_HWNDPARENT, GetWindowLong(GetWindow(WizardForm.Handle, GW_OWNER), GWL_HWNDPARENT));
end;


BYRedex 15-11-2021 03:10

Hi all.
Could you please help me with the following:
I have an installer for a mod, but if a person uninstalls a mod, the whole game is uninstalled as well.
How can I make it so that only the mod files are deleted?

I was thinking of keeping an install log and taking files from it to delete, but damn, that doesn't work right.
(It doesn't delete files from the list and it doesn't log small files)
I'll attach a sample code)

Thank you in advance.

Code:

Function InitializeUninstall(): Boolean;
begin
  ULog := FileExists(ExpandConstant('{app}\INSTALL.LOG')); // you need to get the log now, it might not exist later
  if ULog then // if there is a log file, create a sheet where we load the list of files
  begin
    unins_list := TStringList.Create;
    unins_list.LoadFromFile(ExpandConstant('{app}\INSTALL.LOG'));
  end;
  Result := True;
end;

Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
  var
    i : Integer;
begin
  If CurUninstallStep = usPostUninstall then
    if ULog then
    begin
      for i := 0 to unins_list.Count-1 do DeleteFile(unins_list:[i]); // delete files from the list - It doesn't work
      unins_list.Free;
    end;
end;

Example here

Cesar82 15-11-2021 06:40

Quote:

Originally Posted by BYRedex (Post 494904)
Hi all.
Could you please help me with the following:
I have an installer for a mod, but if a person uninstalls a mod, the whole game is uninstalled as well.
How can I make it so that only the mod files are deleted?

I was thinking of keeping an install log and taking files from it to delete, but damn, that doesn't work right.
(It doesn't delete files from the list and it doesn't log small files)
I'll attach a sample code)

Thank you in advance.

Code:

Function InitializeUninstall(): Boolean;
begin
  ULog := FileExists(ExpandConstant('{app}\INSTALL.LOG')); // you need to get the log now, it might not exist later
  if ULog then // if there is a log file, create a sheet where we load the list of files
  begin
    unins_list := TStringList.Create;
    unins_list.LoadFromFile(ExpandConstant('{app}\INSTALL.LOG'));
  end;
  Result := True;
end;

Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
  var
    i : Integer;
begin
  If CurUninstallStep = usPostUninstall then
    if ULog then
    begin
      for i := 0 to unins_list.Count-1 do DeleteFile(unins_list:[i]); // delete files from the list - It doesn't work
      unins_list.Free;
    end;
end;

Example here

The IsDone callback function (ProgressCallback) does not display the names of all files.
This function is called 4 times per second and only the current filename is shown in the output.

If you use a native installation of Inno Setup (No UnArc/ISDone) it will only remove the installed files.

But for you to continue using your script you can create a list using FindFirst and FindNext of all the files that are in the game folder right after the ISDoneInit function.
After the ISDoneStop function you do a new check using FindFirst and FindNext and compare the names with the previous list using:
if oldfileslist.IndexOf(<fullfilename>) < 0 then ins_log.Append(<fullfilename>);

BYRedex 15-11-2021 09:15

Quote:

Originally Posted by Cesar82 (Post 494907)
The IsDone callback function (ProgressCallback) does not display the names of all files.
This function is called 4 times per second and only the current filename is shown in the output.

If you use a native installation of Inno Setup (No UnArc/ISDone) it will only remove the installed files.

But for you to continue using your script you can create a list using FindFirst and FindNext of all the files that are in the game folder right after the ISDoneInit function.
After the ISDoneStop function you do a new check using FindFirst and FindNext and compare the names with the previous list using:
if oldfileslist.IndexOf(<fullfilename>) < 0 then ins_log.Append(<fullfilename>);

Here is my ProgressCallback code
Code:

procedure DeinitializeSetup;
begin
 BASS_Free;
 ForceCloseApp(ExpandConstant('{tmp}'));
end;

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
var
 s : AnsiString;
 FCurrentFile : String;
begin
  if OveralPct<=1000 then ProgressBar.Value(OveralPct);
  WizardForm.ProgressGauge.Position:=OveralPct;
  FinishLabl5.Text(ExpandConstant('{cm:TIME_TAKEN} ')+TimeStr2);
  InsPageLabl4.Text(ExpandConstant('Осталось около: ')+TimeStr1);
  InsPageLabl5.Text(ExpandConstant('Прошло около: ')+TimeStr2);
  InsPageLabl6.Text(IntToStr(Round(OveralPct div 10))+'% ИЗВЛЕЧЕНО ФАЙЛОВ');
  s := ExpandConstant('{cm:Extracting} ') + CurrentFile;
  If InsLogBox.LineStrings(InsLogBox.LineCount - 1) <> s Then
  begin
  FCurrentFile := MinimizePathName(ExpandConstant('{cm:Extracting} ') +CurrentFile, WizardForm.ReadyMemo.Font, 500 - ScaleX(50))
  InsLogBox.AddLine(FCurrentFile);
  end;
  Result := ISDoneCancel;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
 ResultCode:Integer;
begin
  if CurStep = ssPostInstall then
  begin
  ISDoneError:=true;
  if ISDoneInit(ExpandConstant('{tmp}\records.inf'), 5555, 0,0,0, MainForm.Handle, 512, @ProgressCallback) then begin
    repeat
    ChangeLanguage('english');
    SetIniString('srep','temp',ExpandConstant('{app}'),ExpandConstant('{tmp}\cls.ini'));
    Installing:=true;

    #ifdef Data1
    if not ISArcExtract ( 0, {#D1[61]}, ExpandConstant('{src}\{#D1[60]}'), ExpandConstant('{app}'), '', false,('{#Dat1}'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'), false) then break;
    #ifdef Data2
    if not ISArcExtract ( 0, {#D2[61]}, ExpandConstant('{src}\{#D2[60]}'), ExpandConstant('{app}'), '', false,('{#Dat2}'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'), false) then break;
    #ifdef Data3
    if not ISArcExtract ( 0, {#D3[61]}, ExpandConstant('{src}\{#D3[60]}'), ExpandConstant('{app}'), '', false,('{#Dat3}'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'), false) then break;
    #ifdef Data4
    if not ISArcExtract ( 0, {#D4[61]}, ExpandConstant('{src}\{#D4[60]}'), ExpandConstant('{app}'), '', false,('{#Dat4}'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'), false) then break;
    #ifdef Data5
    if not ISArcExtract ( 0, {#D5[61]}, ExpandConstant('{src}\{#D5[60]}'), ExpandConstant('{app}'), '', false,('{#Dat5}'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'), false) then break;
    #ifdef Data6
    if not ISArcExtract ( 0, {#D6[61]}, ExpandConstant('{src}\{#D6[60]}'), ExpandConstant('{app}'), '', false,('{#Dat6}'), ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\temp'), false) then break;
    #endif
    #endif
    #endif
    #endif
    #endif
    #endif

    ISDoneError:=false;
    until true;
    ISDoneStop;
    end;
  end;

If you can, please attach an example that I can lean on - it will be easier for me to understand and change my code.
And perhaps an IsDone can be substituted?

UPD/


I have information displayed in FMemo (InsLogBox : FMemo;), can it also be saved to a file?


Code:

s := ExpandConstant('{cm:Extracting} ') + CurrentFile;
  If InsLogBox.LineStrings(InsLogBox.LineCount - 1) <> s Then
  begin
  FCurrentFile := MinimizePathName(ExpandConstant('{cm:Extracting} ') +CurrentFile, WizardForm.ReadyMemo.Font, 500 - ScaleX(50))
  InsLogBox.AddLine(FCurrentFile);


kj911 26-11-2021 13:31

Questions from calculated installed game size info added via INNO setup appsize info: Use raw bytes count on installed all files or use phsycal disk storage count calculated via OS??? (Note: The disk size reservation is related to the sector size. Example: 512byte, 4096byter, 32kB, etc...)

Example:

~160k files, and size in bytes (without uninstaller): 19 034 361 518 byte
OS calculated Disk Space size (NTFS, WinXP): 19 340 095 488 byte

Size difference its ~300MB!

Joe Forster/STA 26-11-2021 23:58

Quote:

Originally Posted by kj911 (Post 495032)
(Note: The disk size reservation is related to the sector size. Example: 512byte, 4096byter, 32kB, etc...)

That's more precisely the cluster size.

fabrieunko 03-12-2021 04:02

Hello, how do I display the installer at the bottom of the screen? instead of being in the middle?

sakhjack 12-05-2022 15:17

[Dying Light] csb file failed CRC check
 
Unarc.dll error code: -12
Error: file ...\Music_2.csb failed CRC check
compression: xtool:mreflate + any other method
things tried: disable AV, install MVC++, increase page file, install on different drive
-----
using different pre-compressor like xt_lzo (or none at all) solves the issue

kj911 24-05-2022 07:39

The task killing code (green line, from use Xtool) its works from newer OS than Win XP??

Code:

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
....
ISDoneError:=True;
ISDoneCancel:=1;
Exec('taskkill.exe', '/f /im XT.exe','', SW_HIDE, ewNoWait, ResultCode);
DelTree(ExpandConstant('{app}'), True, True, True);
AllCancel2;
....


Joe Forster/STA 24-05-2022 23:50

Quote:

Originally Posted by kj911 (Post 496961)
The task killing code (green line, from use Xtool) its works from newer OS than Win XP??[/CODE]

It does.

L33THAK0R 05-08-2022 23:02

Is it possible to import an external variable, for example the name of the software package that is defined within a ".ini" config file, for use in an Inno Setup message (namely SetupAppTitle, line 31)?

In essence I'm attempting "SetupAppTitle" to read (for example) "{#Game_Name} Setup", but can't quite figure out if this is possible. I'm currently just manually overwriting the value in question but it is a tad tedious.

KaktoR 06-08-2022 00:35

There are GetIniInt and GetIniString functions.

L0v3craft 24-08-2022 14:07

Hi guys. I'm using Inno Script Studio + Inno Setup (both updated) to compress little games. For example "Cult of the Lamb" (1.14GB).

I have tested the installation on my pc (ryzen with 16 threads and 16GB of ram), but a friend of mine is getting an error "out of memory" on his pc with 32GB of ram.

These are the parameters that I'm using:

Compression=lzma2/ultra64
DiskSpanning=yes
DiskSliceSize=max
LZMAUseSeparateProcess=yes
LZMADictionarySize=1048576
LZMANumFastBytes=273

someone knows which one of those parameters is causing "out of memory" error in installation? Thanks to everyone that is going to help me.

Checking from the task manager, the setup in installation is using 1029MB of ram at max and works fine on my pc.

Edit: solved using -> LZMADictionarySize=524288

Lord.Freddy 24-08-2022 22:39

Quote:

Originally Posted by L0v3craft (Post 498074)
Hi guys. I'm using Inno Script Studio + Inno Setup (both updated) to compress little games. For example "Cult of the Lamb" (1.14GB).

I have tested the installation on my pc (ryzen with 16 threads and 16GB of ram), but a friend of mine is getting an error "out of memory" on his pc with 32GB of ram.

These are the parameters that I'm using:

Compression=lzma2/ultra64
DiskSpanning=yes
DiskSliceSize=max
LZMAUseSeparateProcess=yes
LZMADictionarySize=1048576
LZMANumFastBytes=273

someone knows which one of those parameters is causing "out of memory" error in installation? Thanks to everyone that is going to help me.

Checking from the task manager, the setup in installation is using 1029MB of ram at max and works fine on my pc.

Use this:
Code:

LZMADictionarySize=10500

Lord.Freddy 27-08-2022 04:43

Inno setup Enhanced edition(5.5.1.ee2)(u)
 
Hi guys, I have questions about features of this version

1: what's the [speed button] is and what is its use?
2: how to create a custom page in design mode?

Cesar82 28-08-2022 14:19

1 Attachment(s)
Quote:

Originally Posted by Lord.Freddy (Post 498103)
Hi guys, I have questions about features of this version

1: what's the [speed button] is and what is its use?
2: how to create a custom page in design mode?

Speed Button (see image) of the New SpeedButton class is a button with the option of including a context menu, but for this you must also use TPopupMenu and TMenuItem.

Masquerade 01-09-2022 05:48

Is there a list of T<> identifiers in Inno Setup 6?

I am trying to load an animated gif but I'm finding it hard. TBitmapImage is incorrect, I found references online to needing to use TGifImage or TImage but they don't appear to exist in inno.

Here's what I have so far (I understand that it isn't correct):

Code:

  ExtractTemporaryFile('LOGOIMAGE.GIF');
  LogoImage := TGifImage.Create(WizardForm);
  with LogoImage do
  begin
    Name := 'LogoImage';
    Parent := WizardForm;
    SetBounds(ScaleX(10), ScaleY(10), ScaleX(300), ScaleY(60));
    //Gif.LoadFromFile(ExpandConstant('{tmp}\LOGOIMAGE.GIF'));
  end;

Thanks!

KaktoR 01-09-2022 06:00

I think there is no native way in Inno Setup to show animated gif images.

Masquerade 01-09-2022 06:01

Quote:

Originally Posted by KaktoR (Post 498153)
I think there is no native way in Inno Setup.

Would that mean I would need to include a library such as botva2?

KaktoR 01-09-2022 06:02

I think there is isgsg.dll library

Masquerade 01-09-2022 06:06

Quote:

Originally Posted by KaktoR (Post 498155)
I think there is isgsg.dll library

That appears to only do Splash screen judging by the iss examples and by looking at the DLL exports

KaktoR 01-09-2022 06:09

Ok, so you want to show the gif image permanent somewhere on installer surface, like a bitmap image?

Pretty sure it's possible but never thought about that :(

Cesar82 01-09-2022 17:56

Quote:

Originally Posted by Masquerade (Post 498152)
Is there a list of T<> identifiers in Inno Setup 6?

I am trying to load an animated gif but I'm finding it hard. TBitmapImage is incorrect, I found references online to needing to use TGifImage or TImage but they don't appear to exist in inno.

Here's what I have so far (I understand that it isn't correct):

Code:

  ExtractTemporaryFile('LOGOIMAGE.GIF');
  LogoImage := TGifImage.Create(WizardForm);
  with LogoImage do
  begin
    Name := 'LogoImage';
    Parent := WizardForm;
    SetBounds(ScaleX(10), ScaleY(10), ScaleX(300), ScaleY(60));
    //Gif.LoadFromFile(ExpandConstant('{tmp}\LOGOIMAGE.GIF'));
  end;

Thanks!

To use gif images in Inno Setup you can use the library GifCtrl.dll

PercyMaliek 16-09-2022 12:01

I'm bloody new to Inno Setup script.
I've created the bins for a game, but I'm unsure how to have Inno decompress them

Compression was PrecompX+srep+lolz

precompx\x64\PrecompX.exe -e - - <stdin> <stdout>
srep\srep.exe -m3f -l512 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
lolz\lolz_x64.exe -d256 -mc192 -mt4 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp

Besides a few basic tutorials, I've not come across anything about decompression with ISS...


All times are GMT -7. The time now is 04:08.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com