[Setup] AppName=My Program AppVerName=My Program v.1.2 DefaultDirName={pf}\My Program [Files] Source: callnsis.dll; Flags: dontcopy [Code] var Button: TButton; Skins: TStringList; i: integer; procedure callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar); external 'callplug@files:callnsis.dll stdcall'; procedure GetSkins(); var FindRec: TFindRec; begin if FindFirst(ExpandConstant('{src}\skin\*.skf'), FindRec) then begin try repeat if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin Skins.Add(FindRec.Name); end; until not FindNext(FindRec); finally FindClose(FindRec); end; end; end; procedure ButtonOnClick(Sender: TObject); begin if i = Skins.Count - 1 then i:= 0 else i:= i+1; callplug(0, ExpandConstant('{src}\skin\NSIS_SkinCrafter_Plugin.dll'), 'skin', ExpandConstant('{src}\skin\' + Skins[i]), '','','','','','','','',''); Button.Caption := Skins[i]; end; procedure InitializeWizard(); begin Skins:= TStringList.Create; GetSkins(); Button := TButton.Create(WizardForm); Button.Left := 10; Button.Top := WizardForm.CancelButton.Top; Button.Width := WizardForm.CancelButton.Width + 30; Button.Height := WizardForm.CancelButton.Height; Button.Caption := Skins[0]; Button.OnClick := @ButtonOnClick; Button.Parent := WizardForm; WizardForm.Position:=poDesktopCenter WizardForm.Height:=WizardForm.Height-40 callplug(0, ExpandConstant('{src}\skin\NSIS_SkinCrafter_Plugin.dll'), 'skin', ExpandConstant('{src}\skin\' + Skins[0]), '','','','','','','','',''); end; |