>#define MyAppName "Samaan Systems" >#define MyAppVerName "Samaan Systems" >#define MyAppPublisher "Samaan Systems Ltd." >#define MyAppURL "http://SamaanSystems.com" >#define MyAppExeName "myprog.exe" > >[Setup] >AppName={#MyAppName} >AppVerName={#MyAppVerName} >AppId=SSL1 >AppPublisher={#MyAppPublisher} >AppPublisherURL={#MyAppURL} >AppSupportURL={#MyAppURL} >AppUpdatesURL={#MyAppURL} >DefaultDirName={pf}\{#MyAppName} >AppVersion=1.0 >DefaultGroupName={#MyAppVerName} >Compression=lzma >SolidCompression=true >OutputBaseFilename={#MyAppName} setup >CreateAppDir=no >LicenseFile=readme.txt >DisableProgramGroupPage=yes > >[Messages] >BeveledLabel=© 2006 Samaan Systems Ltd. > >[Types] >Name: workstation; Description: Workstation installation >Name: shared; Description: Shared files installation >Name: full; Description: Full installation > >[Components] >Name: workstation; Description: Workstation files; Types: full workstation >Name: shared; Description: Shared files; Types: full shared > >[Tasks] >Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; components: workstation >Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; components: workstation > >[Files] >;********************************************************************** >; >; Workstation component files >; >;********************************************************************** >Source: myprog.exe; DestDir: {code:GetAppDir}; Flags: ignoreversion; Components: workstation > >;********************************************************************** >; >; shared component files >; >;********************************************************************** >Source: readme.txt; DestDir: {code:GetDataDir}; Flags: ignoreversion; Components: shared > >[Icons] >Name: {group}\{#MyAppName}; Filename: {code:GetAppDir}\MyProg.exe >Name: {commondesktop}\{#MyAppName}; Filename: {code:GetAppDir}\MyProg.exe; Tasks: desktopicon; WorkingDir: {app}; IconIndex: 0 > >[Run] >Filename: {app}\Myprog.exe; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent; Components: workstation > >[Code] >var > AppDirPage, DataDirPage: TInputDirWizardPage; > >procedure InitializeWizard; >begin > { Create the app directory page } > AppDirPage := CreateInputDirPage( wpSelectComponents, > 'Select Workstation Directory', 'Where should the workstation files be installed?', > 'Setup will install the workstation files into the following folder.', > False, 'New Folder'); > AppDirPage.Add( 'To continue, click Next. If you would like to select a different location, click Browse'); > > { Create the data directory page } > DataDirPage := CreateInputDirPage( wpSelectComponents, > 'Select Shared Files Directory', 'Where should the shared files be installed?', > 'Setup will install the shared files into the following folder.', > False, 'New Folder'); > DataDirPage.Add( 'To continue, click Next. If you would like to select a different location, click Browse'); > >end; > >procedure RegisterPreviousData( PreviousDataKey: Integer); >begin > { Save the DataDir setting so we can restore it next time } > SetPreviousData( PreviousDataKey, 'AppDir', AppDirPage.Values[0]); > SetPreviousData( PreviousDataKey, 'DataDir', DataDirPage.Values[0]); >end; > >procedure CurPageChanged(curPageID: Integer); > >var SetupType: String; > >begin > > if CurPageID = AppDirPage.ID then > begin > SetupType:=WizardSetupType(False); > > case SetupType of > 'full': AppDirPage.Values[0] := GetPreviousData('AppDir', ExpandConstant('{pf}') + '\Samaan Systems'); > 'workstation': AppDirPage.Values[0] := GetPreviousData('AppDir', ExpandConstant('{pf}') + '\Samaan Systems'); > end; > end; > > if CurPageID = DataDirPage.ID then > begin > SetupType:=WizardSetupType(False); > > case SetupType of > 'full': DataDirPage.Values[0] := GetPreviousData('DataDir', ExpandConstant('{pf}') + '\Samaan Systems\Data'); > 'shared': DataDirPage.Values[0] := GetPreviousData('DataDir', ExpandConstant('{pf}') + '\Samaan Systems\Data'); > end; > end; >end; > > >function ShouldSkipPage( PageID: Integer): Boolean; >begin > { Skip the AppDir page if the shared component is not selected } > if ( PageID = AppDirPage.ID) then > Result := pos( 'workstation', WizardSelectedComponents( false)) = 0 > > { Skip the DataDir page if the shared component is not selected } > if ( PageID = DataDirPage.ID) then > Result := pos( 'shared', WizardSelectedComponents( false)) = 0 > >end; > > >function UpdateReadyMemo( Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, > MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; >var > S: String; >begin > { Fill the 'Ready Memo' with the normal settings and the custom settings } > S := ''; > S := MemoComponentsInfo + NewLine + NewLine; > > { Workstation component is selected } > if pos( 'workstation', WizardSelectedComponents( false)) > 0 then > S := S + MemoDirInfo + appDirPage.Values[0] + ' (Workstation files)' + NewLine; > > { shared component is selected } > if pos( 'shared', WizardSelectedComponents( false)) > 0 then > S := S + DataDirPage.Values[0] + ' (Shared files)' + NewLine; > > Result := S; >end; > >function GetDataDir( S: String): String; >begin > { Return the selected DataDir } > Result := DataDirPage.Values[0]; >end; > >function GetAppDir( Default: String): String; >begin > { Return the install dir } > Result := AppDirPage.Values[0]; >end; > >>