View Full Version : 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.
Prince4 ISDone0.6final Script ISDone_Example
[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;
can you please comment it in English BTW Thanks for the Help
Prince4 ISDone0.6final Script ISDone_Example
[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.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.