FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   Component Selection then extraction? (https://fileforums.com/showthread.php?t=97946)

Prince4 04-06-2016 23:58

Component Selection then extraction?
 
I know there could be a Thread to this but i'm in way too curious to start another.

-> How can i have a component selection in a inno setup which then extracts particular archive or a particular file in it?

Details :

Like i created a installer which i want it to show some options like :
Component A
Component B
Component C

Component A = Setup-1.Rpk
Component B = Setup-2.Rpk
Component C = Setup-1.Rpk + Setup-2.Rpk

I just want the user to chose one of the component so then the installer extracts the particular archive or particular files in the archive.

-------------------------------

Like there's in Max Payne 3 Repack by R.G. Origami.

vint56 05-06-2016 01:36

Prince4 ISDone0.6final Script ISDone_Example
Code:

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: Component; Description: Component Selection; Types: full; Flags: fixed // Component 0
Name: Component\a; Description: Component - A; Flags: exclusive;  // Component 1
Name: Component\b; Description: Component - B; Flags: exclusive; // Component 2
Name: Component\c; Description: Component - C; Flags: exclusive; // Component 3

[ code]
 Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('Component\a') then Comps1:=Comps1+TmpValue;    //Component 1
    TmpValue:=TmpValue*2;
    if IsComponentSelected('Component\b') then Comps1:=Comps1+TmpValue;    //Component 2
    TmpValue:=TmpValue*2;
    if IsComponentSelected('Component\c') then Comps1:=Comps1+TmpValue;    //Component 3
    TmpValue:=TmpValue*2;
    if IsComponentSelected('Component\d') then Comps1:=Comps1+TmpValue;    //Component 4

#endif

If IsComponentSelected('Component\a') then
begin
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-1.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
end;

If IsComponentSelected('Component\b') then
begin
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-2.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
end;

If IsComponentSelected('Component\c') then
begin
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-1.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-2.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
end;


Prince4 05-06-2016 01:48

can you please comment it in English BTW Thanks for the Help

ffmla 22-09-2016 10:35

Components selection progressbar info
 
Quote:

Originally Posted by vint56 (Post 449382)
Prince4 ISDone0.6final Script ISDone_Example
Code:

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: Component; Description: Component Selection; Types: full; Flags: fixed // Component 0
Name: Component\a; Description: Component - A; Flags: exclusive;  // Component 1
Name: Component\b; Description: Component - B; Flags: exclusive; // Component 2
Name: Component\c; Description: Component - C; Flags: exclusive; // Component 3

[ code]
 Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('Component\a') then Comps1:=Comps1+TmpValue;    //Component 1
    TmpValue:=TmpValue*2;
    if IsComponentSelected('Component\b') then Comps1:=Comps1+TmpValue;    //Component 2
    TmpValue:=TmpValue*2;
    if IsComponentSelected('Component\c') then Comps1:=Comps1+TmpValue;    //Component 3
    TmpValue:=TmpValue*2;
    if IsComponentSelected('Component\d') then Comps1:=Comps1+TmpValue;    //Component 4

#endif

If IsComponentSelected('Component\a') then
begin
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-1.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
end;

If IsComponentSelected('Component\b') then
begin
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-2.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
end;

If IsComponentSelected('Component\c') then
begin
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-1.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
  if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Setup-2.Rpk'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
end;


Hi,
thanks for info,
In the componenet section how to use records.ini for smooth progress bar.
If i choose single component.-->record.ini created =No Problem
but by choosing multiple file-how to make record.ini file..
please help,:)

Thanks in advance.


All times are GMT -7. The time now is 15:32.

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