1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Inno Setup (создание инсталяционных пакетов)

Тема в разделе "Inno Setup", создана пользователем Shegorat, 9 авг 2013.

Статус темы:
Закрыта.
  1. Пользователь

    Регистрация:
    16 сен 2012
    Сообщения:
    312
    Симпатии:
    64
    Пол:
    Мужской
    PlaymatE, А так:

     
    PlaymatE нравится это.
  2. Old Men Проверенный

    Регистрация:
    17 июн 2011
    Сообщения:
    469
    Симпатии:
    448
    Пол:
    Мужской
    PlaymatE, опять же из русской справки
    Скачай уже русскую справку к InnoSetup - сразу много вопросов отпадёт.
     
  3. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.329
    Симпатии:
    867
    del
     
    Последнее редактирование: 28 мар 2014
  4. Знаток Проверенный

    Регистрация:
    21 июн 2011
    Сообщения:
    80
    Симпатии:
    165
    через ботву делали что-то типа http://rghost.ru/53528075

    PS исходники нашел, если кому интересно http://rghost.ru/53558841
     
    Последнее редактирование: 29 мар 2014
  5. Пользователь

    Регистрация:
    27 мар 2014
    Сообщения:
    353
    Симпатии:
    77
    Пол:
    Мужской
    Как создать чекбокс в деинсталяторе с функцией не удалять файл?
     
  6. Пользователь

    Регистрация:
    28 авг 2012
    Сообщения:
    98
    Симпатии:
    19
    Пол:
    Мужской
    Всем привет. можно исправить вот это, нажимаешь мышкой на определенную область и все картинки исчезают ( bmp, png -creatframe, createimage) :(

    [​IMG]
     
  7. Пользователь

    Регистрация:
    16 сен 2012
    Сообщения:
    312
    Симпатии:
    64
    Пол:
    Мужской
    audiofeel, Пример запуска ну и тд...
     
  8. Пользователь

    Регистрация:
    28 авг 2012
    Сообщения:
    98
    Симпатии:
    19
    Пол:
    Мужской
    Shift85, что именно.... ссылку на скрипт в лс
    Код (Text):
    1.  
    2. #ifdef UNICODE
    3.   #define A "W"
    4.   type
    5.     PChar = PAnsiChar;
    6. #else
    7.   #define A "A"
    8. #endif
    9.  
    10. #include "Modules/botva2.iss"
    11. #include "Modules/TaskBar.iss"
    12. #include "Modules/ISDone.iss"
    13. #include "Modules/BASS_Module.iss"
    14.  
    15. const
    16.   FR_PRIVATE = $10;
    17.   SC_DragMove = $F012;
    18.   WM_SYSCOMMAND = $0112;
    19.   SC_MINIMIZE = 61472;
    20.   notPCFonFLY = False;
    21.  
    22. type
    23.   TCallbackProc = function (h: hWnd; Msg, wParam, lParam: Longint): Longint;
    24.  
    25. var
    26.   Frame: TForm;
    27.   ButtonFont: TFont;
    28.   ISDoneCancel: integer;
    29.   ISDoneProgressBar: TNewProgressBar;
    30.   WFOldProc, Wizard1, Fon, Edit, ProgressBarBkg, ProgressBarImg, PBOldProc: Longint;
    31.   ISInit, ISDoneError, OldMinimizeAnimation: boolean;
    32.   CancelButton, BackButton, NextButton, DirBrowseButton, GroupBrowseButton, DesktopIconCheckBox :HWND;
    33.   ExitButton, MinButton, NoStartIconCheckBox, DirectXCheckBox, VisualCCheckBox :HWND;
    34.   WelcomeLabel, WelcomeLabel2, SelectDir, SelectDir2, NeedInstallSizeLabel: TLabel;
    35.   GroupEditLabel, DirEditLabel, SelectProgramGroupPage, SelectTasks, ISDoneErrorLabel : TLabel;
    36.   NoStartIconLabel, DesktopIconLabel, DirectXLabel, VisualCLabel, FileNameLabel, UnpackingArcLabel: TLabel;
    37.  
    38. function ReleaseCapture: Longint; external 'ReleaseCapture@user32.dll stdcall';
    39. function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProc{#A}@user32.dll stdcall';
    40. function GetClassLong(Wnd: HWnd; Index: Integer): Longint; external 'GetClassLong{#A}@user32.dll stdcall';
    41. function SetClassLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetClassLong{#A}@user32.dll stdcall';
    42. function SetWindowPos(hWnd: HWND; hWndInsertAfter: HWND; X, Y, cx, cy: Integer; uFlags: UINT): BOOL; external 'SetWindowPos@user32.dll stdcall';
    43. function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
    44. function mciSendString(lpstrCommand, lpstrReturnString: PAnsiChar; uReturnLength, hWndCallback: Integer): Integer; external 'mciSendString{#A}@winmm stdcall delayload';
    45. function LoadImage(hInst: THandle; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImage{#A}@user32.dll stdcall';
    46. function SetWindowRgn(hWnd: HWND; hRgn: LongWord; bRedraw: BOOL): Integer;  external 'SetWindowRgn@user32.dll stdcall';
    47. function ReleaseDC(hWnd: HWND; hDC: LongWord): Integer; external 'ReleaseDC@user32.dll stdcall';
    48. function DeleteObject(p1: LongWord): BOOL; external 'DeleteObject@gdi32.dll stdcall';
    49. function WndProcCallBack(P:TCallbackProc;ParamCount:integer):LongWord; external 'wrapcallback@files:ISDone.dll stdcall delayload';
    50. function AddFontResource(lpszFilename: String; fl, pdv: DWORD): Integer; external 'AddFontResourceEx{#A}@gdi32.dll stdcall';
    51. function RemoveFontResource(lpFileName: String; fl, pdv: DWORD): BOOL; external 'RemoveFontResourceEx{#A}@gdi32.dll stdcall';
    52.  
    53. procedure SetRgn(h:HWND;FileName:String;Width,Height:integer);
    54. var
    55.   dc:LongWord;
    56.   FRgn:LongWord;
    57.   bmp:HBITMAP;
    58. begin
    59.   BMP := LoadImage(0,PAnsiChar(ExpandConstant('{tmp}')+'\'+FileName),0,Width,Height,$10);
    60.   dc := GetDC(h);
    61.   FRgn := CreateBitmapRgn(dc,bmp,$ffffff,0,0);
    62.   SetWindowRgn(h,FRgn,True);
    63.   ReleaseDC(h,dc);
    64.   DeleteObject(BMP);
    65. end;
    66.  
    67. function WFProc(h:hWnd;Msg,wParam,lParam:Longint):Longint;
    68. begin
    69.   if Msg=$3 then SetWindowPos(Frame.Handle,0,WizardForm.Left,WizardForm.Top,0,0,$515);
    70.   Result := CallWindowProc(WFOldProc,h,Msg,wParam,lParam);
    71. end;
    72.  
    73. procedure FrameMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    74. begin
    75.   ReleaseCapture;
    76.   SendMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_DragMove, 0);
    77. end;
    78.  
    79. function InitializeSetup:boolean;
    80. begin
    81.   ISInit := False;
    82.   if not FileExists(ExpandConstant('{tmp}\b2p.dll'))    then ExtractTemporaryFile('b2p.dll');
    83.   if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
    84.   if not FileExists(ExpandConstant('{tmp}\BASS.dll'))   then ExtractTemporaryFile('BASS.dll');
    85.   Result := True;
    86. end;
    87.  
    88. function ProgressCallback(OveralPct,CurrentPct: integer; CurrentFile, TimeStr1, TimeStr2,
    89.   TimeStr3: PAnsiChar): longword;
    90. begin
    91.   if OveralPct <= 1000 then
    92.     ISDoneProgressBar.Position := OveralPct;
    93.     FileNamelabel.Caption := ExpandConstant('{app}\') + MinimizePathName(CurrentFile, FileNamelabel.Font, FileNamelabel.Width-ScaleX(100));
    94.   Result := ISDoneCancel;
    95. end;
    96.  
    97. function PBProc(h: hWnd; Msg, wParam, lParam: Longint): Longint;
    98. var
    99.   pr, i1, i2: Extended;
    100.   w: integer;
    101. begin
    102.   Result := CallWindowProc(PBOldProc, h, Msg, wParam, lParam);
    103.   if (Msg = $402) and (ISDoneProgressBar.Position > ISDoneProgressBar.Min) then begin
    104.     i1 := ISDoneProgressBar.Position - ISDoneProgressBar.Min;
    105.     i2 := ISDoneProgressBar.Max - ISDoneProgressBar.Min;
    106.     pr := i1 * 100 / i2;
    107.     w := Round(598 * pr / 100);
    108.     UnpackingArcLabel.Caption := ExpandConstant('{cm:UnpackingArc}');
    109.     ImgSetPosition(ProgressBarImg, ScaleX(93), ScaleY(311), w, ScaleY(25));
    110.     ImgSetVisiblePart(ProgressBarImg, ScaleX(0), ScaleY(0), w, ScaleY(25));
    111.     ImgApplyChanges(WizardForm.Handle);
    112.   end;
    113. end;
    114.  
    115. procedure CreateFrame;
    116. begin
    117.   Frame := TForm.Create(nil);
    118.   Frame.BorderStyle := bsNone;
    119.   CreateFormFromImage(Frame.Handle,ExpandConstant('{tmp}\frame.png'));
    120.   with TLabel.Create(Frame) do begin
    121.     Parent := Frame;
    122.     Align := alClient;
    123.     OnMouseDown := @FrameMouseDown;
    124.   end;
    125.   WizardForm.Left := Frame.Left;
    126.   WizardForm.Top := Frame.Top;
    127.   WFOldProc := SetWindowLong(WizardForm.Handle,-4,WndProcCallBack(@WFProc,4));
    128.   Frame.Show;
    129. end;
    130.  
    131. procedure WFDeInit;
    132. begin
    133.   Frame.Visible := False;
    134.   WizardForm.Visible := False;
    135.   SetWindowLong(WizardForm.Handle,-4,WFOldProc);
    136.   Frame.Free;
    137. end;
    138.  
    139. procedure WizardFormBtnClick(hBtn:HWND);
    140. var
    141.   Btn:TButton;
    142.   ErrorCode: Integer;
    143. begin
    144.   case hBtn of
    145.   CancelButton: begin
    146.     if WizardForm.CurPageID = wpInstalling then begin
    147.       SuspendProc;
    148.       if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then
    149.         ISDoneCancel := 1;
    150.       ResumeProc;
    151.       Exit;
    152.     end else
    153.     Btn := WizardForm.CancelButton;
    154.   end;
    155.   NextButton: Btn:= WizardForm.NextButton;
    156.   BackButton: Btn:= WizardForm.BackButton;
    157.   DirBrowseButton: Btn:= WizardForm.DirBrowseButton;
    158.   GroupBrowseButton: Btn:= WizardForm.GroupBrowseButton;
    159.   ExitButton: Btn := WizardForm.CancelButton;
    160.   MinButton: begin
    161.     SendMessage(WizardForm.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    162.     Exit;
    163.   end;
    164. end;
    165.   Btn.OnClick(Btn);
    166.   BtnRefresh(hBtn);
    167. end;
    168.  
    169. procedure DirEditOnChange(Sender: TObject);
    170. begin
    171.   DirEditLabel.Caption := WizardForm.DirEdit.Text;
    172. end;
    173.  
    174. procedure GroupEditOnChange(Sender: TObject);
    175. begin
    176.   GroupEditLabel.Caption := WizardForm.GroupEdit.Text;
    177. end;
    178.  
    179. function NoStartIcon: boolean;
    180. begin
    181.   Result := BtnGetEnabled(GroupBrowseButton);
    182. end;
    183.  
    184. procedure NoStartIconClick(hBtn: HWND);
    185. var
    186.   Check: boolean;
    187. begin
    188.   Check := BtnGetChecked(hBtn);
    189.   BtnSetEnabled(GroupBrowseButton, not Check);
    190.   WizardForm.NoIconsCheck.Checked := Check;
    191.   if Check then NoStartIconLabel.Font.Color := {#FontColor2} else NoStartIconLabel.Font.Color := {#FontColor};
    192.   if Check then GroupEditLabel.Font.Color := {#FontColor2} else GroupEditLabel.Font.Color := {#FontColor};
    193. end;
    194.  
    195. function DesktopIcon: boolean;
    196. begin
    197.   Result := BtnGetChecked(DesktopIconCheckBox);
    198. end;
    199.  
    200. function DirectX: boolean;
    201. begin
    202.   Result := BtnGetChecked(DirectXCheckBox);
    203. end;
    204.  
    205. function VisualC: boolean;
    206. begin
    207.   Result := BtnGetChecked(VisualCCheckBox);
    208. end;
    209.  
    210. procedure CheckBoxesClick(Sender: TObject);
    211. begin
    212.   case Sender of
    213.     DesktopIconLabel: BtnSetChecked(DesktopIconCheckBox, not BtnGetChecked(DesktopIconCheckBox));
    214.     DirectXLabel: BtnSetChecked(DirectXCheckBox, not BtnGetChecked(DirectXCheckBox));
    215.     VisualCLabel: BtnSetChecked(VisualCCheckBox, not BtnGetChecked(VisualCCheckBox));
    216.     NoStartIconLabel: begin
    217.       BtnSetChecked(NoStartIconCheckBox, not BtnGetChecked(NoStartIconCheckBox));
    218.       NoStartIconClick(NoStartIconCheckBox);
    219.     end;
    220.   end;
    221. end;
    222.  
    223. procedure CreateImages;
    224. begin
    225.   Wizard1 := ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\frame.png'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True);
    226.   Fon := ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\fon.png'),ScaleX(60), ScaleY(185), ScaleX(670),ScaleY(280),True,True)
    227.   Edit := ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Edit.png'),ScaleX(92), ScaleY(310), ScaleX(480), ScaleY(25),True,True);
    228.   ProgressBarBkg := ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\PBBkg.png'), ScaleX(92), ScaleY(310), ScaleX(600), ScaleY(25), False, True);
    229.   ProgressBarImg := ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\PBImg.png'), ScaleX(93), ScaleY(311), ScaleX(0), ScaleY(23), True, True);
    230. end;
    231.  
    232. procedure CreateButtons;
    233. begin
    234.   CancelButton := BtnCreate(WizardForm.Handle, ScaleX(624), ScaleY(480), ScaleX(100), ScaleY(25), ExpandConstant('{tmp}\button.png'), 0, False);
    235.   BackButton := BtnCreate(WizardForm.Handle, ScaleX(375), ScaleY(480), ScaleX(100), ScaleY(25), ExpandConstant('{tmp}\button.png'), 0, False);
    236.   NextButton := BtnCreate(WizardForm.Handle, ScaleX(499), ScaleY(480), ScaleX(100), ScaleY(25), ExpandConstant('{tmp}\button.png'), 0, False);
    237.  
    238.   DirBrowseButton := BtnCreate(WizardForm.Handle, ScaleX(598), ScaleY(310), ScaleX(100), ScaleY(25), ExpandConstant('{tmp}\button.png'), 0, False);
    239.   GroupBrowseButton := BtnCreate(WizardForm.Handle, ScaleX(598), ScaleY(310), ScaleX(100), ScaleY(25), ExpandConstant('{tmp}\button.png'), 0, False);
    240.  
    241.   ExitButton := BtnCreate(WizardForm.Handle, ScaleX(750), ScaleY(20), ScaleX(25), ScaleY(25), ExpandConstant('{tmp}\Off.png'), 0, False);
    242.   MinButton := BtnCreate(WizardForm.Handle, ScaleX(720), ScaleY(20), ScaleX(25), ScaleY(25), ExpandConstant('{tmp}\Min.png'), 0, False);
    243.  
    244.   NoStartIconCheckBox := BtnCreate(WizardForm.Handle, ScaleX(92), ScaleY(421), ScaleX(25), ScaleY(25), ExpandConstant('{tmp}\CheckBox.png'), 0, True);
    245.   DirectXCheckBox := BtnCreate(WizardForm.Handle, ScaleX(92), ScaleY(276), ScaleX(25), ScaleY(25), ExpandConstant('{tmp}\CheckBox.png'), 0, True);
    246.   VisualCCheckBox := BtnCreate(WizardForm.Handle, ScaleX(92), ScaleY(306), ScaleX(25), ScaleY(25), ExpandConstant('{tmp}\CheckBox.png'), 0, True);
    247.   DesktopIconCheckBox := BtnCreate(WizardForm.Handle, ScaleX(92), ScaleY(336), ScaleX(25), ScaleY(25), ExpandConstant('{tmp}\CheckBox.png'), 0, True);
    248.  
    249.   BtnSetFont(CancelButton, ButtonFont.Handle);
    250.   BtnSetFont(NextButton, ButtonFont.Handle);
    251.   BtnSetFont(BackButton, ButtonFont.Handle);
    252.   BtnSetFont(DirBrowseButton, ButtonFont.Handle);
    253.   BtnSetFont(GroupBrowseButton, ButtonFont.Handle);
    254.  
    255.   BtnSetEvent(ExitButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    256.   BtnSetEvent(MinButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    257.   BtnSetEvent(CancelButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    258.   BtnSetEvent(NextButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    259.   BtnSetEvent(BackButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    260.   BtnSetEvent(DirBrowseButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    261.   BtnSetEvent(GroupBrowseButton, BtnClickEventID, WrapBtnCallback(@WizardFormBtnClick, 1));
    262.   BtnSetEvent(NoStartIconCheckBox,BtnClickEventID,WrapBtnCallback(@NoStartIconClick,1));
    263.  
    264.   BtnSetFontColor(CancelButton, {#FontColor}, {#FontColor1}, {#FontColor1}, {#FontColor2});
    265.   BtnSetFontColor(NextButton, {#FontColor}, {#FontColor1}, {#FontColor1}, {#FontColor2});
    266.   BtnSetFontColor(BackButton, {#FontColor}, {#FontColor1}, {#FontColor1}, {#FontColor2});
    267.   BtnSetFontColor(DirBrowseButton, {#FontColor}, {#FontColor1}, {#FontColor1}, {#FontColor2});
    268.   BtnSetFontColor(GroupBrowseButton, {#FontColor}, {#FontColor1}, {#FontColor1}, {#FontColor2});
    269.  
    270.   BtnSetText(CancelButton, ExpandConstant('{cm:Cancel}'));
    271.   BtnSetText(BackButton, ExpandConstant('{cm:Back}'));
    272.   BtnSetText(NextButton, ExpandConstant('{cm:Next}'));
    273.   BtnSetText(DirBrowseButton, ExpandConstant('{cm:DirBrowse}'));
    274.   BtnSetText(GroupBrowseButton, ExpandConstant('{cm:GroupBrowse}'));
    275. end;
    276.  
    277. Procedure CreateLabels;
    278. begin
    279.   WelcomeLabel := TLabel.Create(WizardForm);
    280.   with WelcomeLabel do begin
    281.     SetBounds(ScaleX(176), ScaleY(230), ScaleX(450), ScaleY(55));
    282.     AutoSize    := false;
    283.     Transparent := true;
    284.     WordWrap    := true;
    285.     ParentFont  := True;
    286.     Alignment   := taCenter;
    287.     Font.Size   := 15;
    288.     Font.Style  := [fsBold];
    289.     Font.Name   := {#FontName};
    290.     Font.Color  := {#FontColor};
    291.     Parent      := WizardForm;
    292.     Caption     := ExpandConstant('{cm:Welcome1}');
    293.   end;
    294.  
    295.   WelcomeLabel2 := TLabel.Create(WizardForm);
    296.   with WelcomeLabel2 do begin
    297.     SetBounds(ScaleX(176), ScaleY(320), ScaleX(450), ScaleY(110));
    298.     AutoSize    := false;
    299.     WordWrap    := true;
    300.     Alignment   := taCenter;
    301.     Font.Size   := 10;
    302.     Font.Name   :={#FontName};
    303.     Font.Color  :={#FontColor};
    304.     Transparent := true;
    305.     Parent      := WizardForm;
    306.     Caption     := ExpandConstant('{cm:Welcome2}');
    307.   end;
    308.  
    309.   SelectDir := TLabel.Create(WizardForm);
    310.   with SelectDir do begin
    311.     SetBounds(ScaleX(92), ScaleY(230), ScaleX(450), ScaleY(25));
    312.     AutoSize    := false;
    313.     WordWrap    := true;
    314.     Font.Size   := 10;
    315.     Font.Style  := [fsBold];
    316.     Font.Name   := {#FontName};
    317.     Font.Color  := {#FontColor};
    318.     Transparent := true;
    319.     Parent      := WizardForm;
    320.     Caption     := ExpandConstant('{cm:SelectDir1}');
    321.   end;
    322.  
    323.   SelectDir2 := TLabel.Create(WizardForm);
    324.   with SelectDir2 do begin
    325.     SetBounds(ScaleX(92), ScaleY(345), ScaleX(450), ScaleY(40));
    326.     AutoSize    := false;
    327.     WordWrap    := true;
    328.     Font.Size   := 10;
    329.     Font.Name   := {#FontName};
    330.     Font.Color  := {#FontColor};
    331.     Transparent := true;
    332.     Parent      := WizardForm;
    333.     Caption     := ExpandConstant('{cm:SelectDir2}');
    334.   end;
    335.  
    336.   NoStartIconLabel := TLabel.Create(WizardForm);
    337.   with NoStartIconLabel do begin
    338.     SetBounds(ScaleX(125), ScaleY(425), ScaleX(400), ScaleY(16));
    339.     AutoSize    := false;
    340.     WordWrap    := true;
    341.     Font.Size   := 10
    342.     Font.Name   := {#FontName};
    343.     Font.Color  := {#FontColor};
    344.     Transparent := true;
    345.     Parent      := WizardForm;
    346.     OnClick     := @CheckBoxesClick;
    347.     Caption     := ExpandConstant('{cm:NoStartIcon}');
    348.   end;
    349.  
    350.   DirEditLabel := TLabel.Create(WizardForm);
    351.   with DirEditLabel do begin
    352.     SetBounds(ScaleX(100), ScaleY(314), ScaleX(475), ScaleY(16));
    353.     AutoSize      := False;
    354.     WordWrap      := True;
    355.     ShowAccelChar := False;
    356.     Transparent   := True;
    357.     Font.Size     := 10;
    358.     Font.Name     := {#FontName}
    359.     Font.Color    := {#FontColor};
    360.     Caption       := WizardForm.DirEdit.Text;
    361.     Parent        := WizardForm;
    362.   end;
    363.  
    364.   GroupEditLabel := TLabel.Create(WizardForm);
    365.   with GroupEditLabel do begin
    366.     SetBounds(ScaleX(100), ScaleY(314), ScaleX(475), ScaleY(16));
    367.     AutoSize      := False;
    368.     WordWrap      := True;
    369.     ShowAccelChar := False;
    370.     Transparent   := True;
    371.     Font.Size     := 10;
    372.     Font.Name     := {#FontName}
    373.     Font.Color    := {#FontColor};
    374.     Caption       := WizardForm.GroupEdit.Text;
    375.     Parent        := WizardForm;
    376.   end;
    377.  
    378.   DirectXLabel := TLabel.Create(WizardForm);
    379.   with DirectXLabel do begin
    380.     SetBounds(ScaleX(130), ScaleY(280), ScaleX(200), ScaleY(16));
    381.     AutoSize    := false;
    382.     Font.Size   := 10
    383.     Font.Name   := {#FontName};
    384.     Font.Color  := {#FontColor};
    385.     Transparent := true;
    386.     Parent      := WizardForm;
    387.     OnClick     := @CheckBoxesClick;
    388.     Caption     := ExpandConstant('{cm:DirectX}');
    389.   end;
    390.  
    391.   VisualCLabel := TLabel.Create(WizardForm);
    392.   with VisualCLabel do begin
    393.     SetBounds(ScaleX(130), ScaleY(309), ScaleX(300), ScaleY(16));
    394.     AutoSize    := false;
    395.     Font.Size   := 10
    396.     Font.Name   := {#FontName};
    397.     Font.Color  := {#FontColor};
    398.     Transparent := true;
    399.     Parent      := WizardForm;
    400.     OnClick     := @CheckBoxesClick;
    401.     Caption     := ExpandConstant('{cm:VC}');
    402.   end;
    403.  
    404.   DesktopIconLabel := TLabel.Create(WizardForm);
    405.   with DesktopIconLabel do begin
    406.     SetBounds(ScaleX(130), ScaleY(339), ScaleX(370), ScaleY(16));
    407.     AutoSize    := false;
    408.     Font.Size   := 10
    409.     Font.Name   := {#FontName};
    410.     Font.Color  := {#FontColor};
    411.     Transparent := true;
    412.     Parent      := WizardForm;
    413.     OnClick     := @CheckBoxesClick;
    414.     Caption     := ExpandConstant('{cm:DesktopIcon}');
    415.   end;
    416.  
    417.   SelectTasks := TLabel.Create(WizardForm);
    418.   with SelectTasks do begin
    419.     SetBounds(ScaleX(92), ScaleY(385), ScaleX(450), ScaleY(50));
    420.     AutoSize    := false;
    421.     WordWrap    := true;
    422.     Font.Size   := 10;
    423.     Font.Name   := {#FontName};
    424.     Font.Color  := {#FontColor};
    425.     Transparent := true;
    426.     Parent      := WizardForm;
    427.     Caption     := ExpandConstant('{cm:SelectTasks}');
    428.   end;
    429.  
    430.   NeedInstallSizeLabel := TLabel.Create(WizardForm);
    431.   with NeedInstallSizeLabel do begin
    432.     SetBounds(ScaleX(90), ScaleY(425), ScaleX(440), ScaleY(16));
    433.     AutoSize    := True;
    434.     Transparent := True;
    435.     Parent      := WizardForm;
    436.     Font.Size   := 10;
    437.     Font.Name   := {#FontName};
    438.     Font.Color  := {#FontColor};
    439.     Caption     := WizardForm.DiskSpaceLabel.Caption;
    440.   end;
    441.  
    442.   UnpackingArcLabel := TLabel.Create(WizardForm);
    443.   with UnpackingArcLabel do begin
    444.     SetBounds(ScaleX(92), ScaleY(230), ScaleX(450), ScaleY(16));
    445.     AutoSize    := False;
    446.     Transparent := True;
    447.     Parent      := WizardForm;
    448.     Font.Size   := 10;
    449.     Font.Style  := [fsBold];
    450.     Font.Name   := {#FontName};
    451.     Font.Color  := {#FontColor};
    452.   end;
    453.  
    454.   FileNameLabel := TLabel.Create(WizardForm);
    455.   with FileNameLabel do begin
    456.     SetBounds(ScaleX(92), ScaleY(290), ScaleX(598), ScaleY(16));
    457.     AutoSize    := False;
    458.     Transparent := True;
    459.     Parent      := WizardForm;
    460.     Font.Size   := 10;
    461.     Font.Name   := {#FontName};
    462.     Font.Color  := {#FontColor};
    463.   end;
    464.  
    465.   ISDoneErrorLabel := TLabel.Create(WizardForm);
    466.   with ISDoneErrorLabel do begin
    467.     SetBounds(ScaleX(176), ScaleY(360), ScaleX(450), ScaleY(110));
    468.     AutoSize    := false;
    469.     WordWrap    := true;
    470.     Alignment   := taCenter;
    471.     Font.Size   := 10;
    472.     Font.Name   := {#FontName};
    473.     Font.Color  := {#FontColor};
    474.     Transparent := true;
    475.     Parent      := WizardForm;
    476.     Caption     := ExpandConstant('{cm:Finished2}');
    477.   end;
    478. end;
    479.  
    480. procedure InitializeWizard;
    481. begin
    482.   if not FontExists({#FontName}) then begin ExtractTemporaryFile('{#Font}');
    483.     AddFontResource(ExpandConstant('{tmp}\{#Font}'), FR_PRIVATE, 0);
    484.   end;
    485.   with WizardForm do begin
    486.     BorderStyle  := bsNone;
    487.     ClientWidth  := ScaleX(796);
    488.     ClientHeight := ScaleY(537);
    489.     InnerNotebook.Hide;
    490.     OuterNotebook.Hide;
    491.     NextButton.Width   := ScaleX(0);
    492.     BackButton.Width   := ScaleX(0);
    493.     CancelButton.Width := ScaleX(0);
    494.     Bevel.Hide;
    495.     Position := poDesktopCenter;
    496.     DirEdit.OnChange   := @DirEditOnChange;
    497.     GroupEdit.OnChange := @GroupEditOnChange;
    498.     ProgressGauge.Max  := 1000;
    499.     Font.Name := {#FontName};
    500.   end;
    501.  
    502.   PBOldProc := 0;
    503.  
    504.   with TLabel.Create(WizardForm) do begin
    505.     Parent := WizardForm;
    506.     Align := alClient;
    507.     Transparent := true;
    508.     OnMouseDown := @FrameMouseDown;
    509.   end;
    510.  
    511.   ButtonFont := TFont.Create;
    512.   with ButtonFont do begin
    513.     Name := {#FontName};
    514.     Size := 12;
    515.   end;
    516.  
    517.   CreateImages;
    518.   CreateButtons;
    519.   CreateLabels;
    520.   CreateFrame;
    521.   init_taskbar;
    522.  
    523.   ISDoneProgressBar := TNewProgressBar.Create(WizardForm);
    524.   with ISDoneProgressBar do begin
    525.     Parent := WizardForm;
    526.     Max := 1000;
    527.     Hide;
    528.   end;
    529.  
    530.   ExtractTemporaryFile('Music.mp3');
    531.   BASS_Init('{tmp}\Music.mp3');
    532.   BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', ScaleX(690), ScaleY(20), ScaleX(25), ScaleY(25), 4);
    533.   ExtractTemporaryFile('form.bmp');
    534.   SetRgn(WizardForm.Handle,'form.bmp', ScaleX(796), ScaleY(537));
    535.   OldMinimizeAnimation := GetMinimizeAnimation;
    536.   SetMinimizeAnimation(False);
    537.   PBOldProc := SetWindowLong(ISDoneProgressBar.Handle, -4, WndProcCallBack(@PBProc, 4));
    538.   ImgApplyChanges(WizardForm.Handle);
    539.   ISInit := True;
    540. end;
    541.  
    542. procedure HideComponents;
    543. begin
    544.   ImgSetVisibility(Edit,False);
    545.   ImgSetVisibility(ProgressBarBkg, False);
    546.   ImgSetVisibility(ProgressBarImg, False);
    547.  
    548.   BtnSetVisibility(BackButton, False);
    549.   BtnSetVisibility(NextButton, False);
    550.   BtnSetVisibility(DirBrowseButton, false);
    551.   BtnSetVisibility(GroupBrowseButton, false);
    552.   BtnSetVisibility(NoStartIconCheckBox, false);
    553.   BtnSetVisibility(DirectXCheckBox, false);
    554.   BtnSetVisibility(VisualCCheckBox, false);
    555.   BtnSetVisibility(DesktopIconCheckBox, false);
    556.  
    557.   WelcomeLabel.Hide;
    558.   WelcomeLabel2.Hide;
    559.   DirectXLabel.Hide;
    560.   DesktopIconLabel.Hide;
    561.   NoStartIconLabel.Hide;
    562.   VisualCLabel.Hide;
    563.   SelectDir.Hide;
    564.   SelectDir2.Hide;
    565.   SelectTasks.Hide;
    566.   DirEditLabel.Hide;
    567.   GroupEditLabel.Hide;
    568.   UnpackingArcLabel.Hide;
    569.   FileNameLabel.Hide;
    570.   ISDoneErrorLabel.Hide;
    571.   NeedInstallSizeLabel.Hide;
    572. end;
    573.  
    574. Procedure ShowComponents(CurPageID: Integer);
    575. Begin
    576.   case CurPageID of
    577.     wpWelcome: begin
    578.       WelcomeLabel.Show;
    579.       WelcomeLabel2.Show;
    580.       BtnSetVisibility(NextButton, True);
    581.       BtnSetText(NextButton, ExpandConstant('{cm:Next}'));
    582.     end;
    583.  
    584.     wpSelectDir: begin
    585.       BtnSetVisibility(BackButton, True);
    586.       BtnSetVisibility(NextButton, True);
    587.       BtnSetText(NextButton, ExpandConstant('{cm:Next}'));
    588.       BtnSetVisibility(DirBrowseButton, true);
    589.       ImgSetVisibility(Edit,True);
    590.       DirEditLabel.Show;
    591.       SelectDir.Show;
    592.       SelectDir.Caption := ExpandConstant('{cm:SelectDir1}');
    593.       SelectDir2.Show;
    594.       NeedInstallSizeLabel.Show;
    595.       DirEditOnChange(nil);
    596.     end;
    597.  
    598.     wpSelectProgramGroup: begin
    599.       BtnSetVisibility(BackButton, True);
    600.       BtnSetVisibility(NextButton, True);
    601.       BtnSetText(NextButton, ExpandConstant('{cm:Next}'));
    602.       BtnSetVisibility(GroupBrowseButton, true);
    603.       BtnSetVisibility(NoStartIconCheckBox, True);
    604.       ImgSetVisibility(Edit,True);
    605.       GroupEditLabel.Show;
    606.       WizardForm.GroupEdit.Show;
    607.       SelectDir.Show;
    608.       SelectDir.Caption := ExpandConstant('{cm:SelectGroup1}');
    609.       SelectDir2.Show;
    610.       NoStartIconLabel.Show;
    611.     end;
    612.  
    613.     wpSelectTasks: begin
    614.       BtnSetVisibility(BackButton, True);
    615.       BtnSetVisibility(NextButton, True);
    616.       BtnSetText(NextButton, ExpandConstant('{cm:Install}'));
    617.       BtnSetVisibility(DesktopIconCheckBox, true);
    618.       BtnSetVisibility(DirectXCheckBox, true);
    619.       BtnSetVisibility(VisualCCheckBox, true);
    620.       SelectDir.Show;
    621.       SelectDir.Caption := ExpandConstant('{cm:SelectTasks1}');
    622.       SelectTasks.Show;
    623.       VisualCLabel.Show;
    624.       DirectXLabel.Show;
    625.       DesktopIconLabel.Show;
    626.     end;
    627.  
    628.     wpInstalling: begin
    629.       ImgSetVisibility(ProgressBarBkg, True);
    630.       ImgSetVisibility(ProgressBarImg, True);
    631.       UnpackingArcLabel.Show;
    632.       FileNameLabel.Show;
    633.     end;
    634.  
    635.     wpFinished: begin
    636.       BtnSetVisibility(CancelButton, False);
    637.       BtnSetVisibility(NextButton, True);
    638.       BtnSetText(NextButton, ExpandConstant('{cm:Finish}'));
    639.       WelcomeLabel.Show;
    640.       WelcomeLabel.Caption := ExpandConstant('{cm:Finished1}');
    641.       ISDoneErrorLabel.Show;
    642.       if ISDoneError then
    643.         ISDoneErrorLabel.Caption := ExpandConstant('{cm:ISDoneError}');
    644.     end;
    645.   end;
    646. end;
    647.  
    648. procedure CurPageChanged(CurPageID: Integer);
    649. begin
    650.   HideComponents;
    651.   ShowComponents(CurPageID);
    652.   ImgApplyChanges(WizardForm.Handle);
    653. end;
    654.  
    655. function CheckError: boolean;
    656. begin
    657.   Result := not ISDoneError;
    658.   FileNameLabel.Hide
    659.   if Result and DirectX then
    660.     UnpackingArcLabel.Caption := ExpandConstant('{cm:SoftInstalling}');
    661.   if Result and VisualC then
    662.     UnpackingArcLabel.Caption := ExpandConstant('{cm:SoftInstalling}');
    663. end;
    664.  
    665. procedure CurStepChanged(CurStep: TSetupStep);
    666. begin
    667.   if CurStep = ssInstall then begin
    668.     ISDoneCancel := 0;
    669.     ExtractTemporaryFile('unarc.dll');
    670.     ExtractTemporaryFile('facompress.dll');
    671.     #ifdef PrecompInside
    672.        ExtractTemporaryFile('CLS-precomp.dll');
    673.        ExtractTemporaryFile('packjpg_dll.dll');
    674.        ExtractTemporaryFile('packjpg_dll1.dll');
    675.        ExtractTemporaryFile('precomp.exe');
    676.        ExtractTemporaryFile('zlib1.dll');
    677.     #endif
    678.     #ifdef SrepInside
    679.        ExtractTemporaryFile('CLS-srep.dll');
    680.     #endif
    681.     #ifdef records
    682.        ExtractTemporaryFile('records.inf');
    683.     #endif
    684.     ISDoneError := True;
    685.     if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, 0, 0, 0, 0, 512, @ProgressCallback) then begin
    686.       repeat
    687.         #ifdef SrepInside
    688.            if not SrepInit(ExpandConstant('{app}\'), 512, 0) then break;
    689.         #endif
    690.         #ifdef PrecompInside
    691.            if not PrecompInit(ExpandConstant('{app}\'), 128, 0) then break;
    692.         #endif
    693.         if not FileSearchInit(True) then break;
    694. //        if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå äèñê ñ èãðîé è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'data.bin') then break;
    695.         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data.bin'), ExpandConstant('{app}'), '', False, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
    696. //        if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå äèñê ñ èãðîé è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'video.bin') then break;
    697. //        if not ISArcExtract ( 0, 0, ExpandConstant('{src}\video.bin'), ExpandConstant('{app}'), '', False, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
    698.         ISDoneError := False;
    699.       until True;
    700.       ISDoneStop;
    701.     end;
    702.     BtnSetEnabled(CancelButton, False);
    703.   end;
    704.   if (CurStep = ssPostInstall) and ISDoneError then begin
    705.     UnpackingArcLabel.Hide;
    706.     FileNameLabel.Hide
    707.     ImgSetVisibility(ProgressBarBkg, False);
    708.     ImgSetVisibility(ProgressBarImg, False);
    709.     ISDoneErrorLabel.Font.Color := clRed;
    710.     Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', False);
    711.   end;
    712. end;
    713.  
    714. procedure DeinitializeSetup();
    715. begin
    716.   if ISInit then begin
    717.     if PBOldProc <> 0 then
    718.       SetWindowLong(ISDoneProgressBar.Handle, -4, PBOldProc);
    719.     WFDeInit;
    720.     SetWindowLong(WizardForm.Handle,-4,WFOldProc);
    721.     SetMinimizeAnimation(OldMinimizeAnimation);
    722.     gdipShutdown;
    723.     ButtonFont.Free
    724.     RemoveFontResource(ExpandConstant('{tmp}\{#Font}'), FR_PRIVATE, 0);
    725.     WizardForm.Free;
    726.     BASS_DeInit;
    727.   end;
    728. end;
    729. [/spoiler]
     
    Последнее редактирование: 31 мар 2014
  9. Пользователь

    Регистрация:
    16 сен 2012
    Сообщения:
    312
    Симпатии:
    64
    Пол:
    Мужской
    Почему вырезание формы на юникоде не пашет?:o вот пример...

    http://rghost.ru/53715393
     
  10. Безумный Лорд Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    756
    Симпатии:
    1.108
    Пол:
    Мужской
    Все работает, одно но
    Код (Text):
    1. function LoadImage(hInst: THandle; ImageName: [color=red][b]PAnsiChar[/b][/color]; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall';
    2.  
     
    Shift85 нравится это.
  11. Пользователь

    Регистрация:
    16 сен 2012
    Сообщения:
    312
    Симпатии:
    64
    Пол:
    Мужской
    Подскажите пожалуйста как на деинсталлятор прикрутить свой шрифт для кнопок...

    Пробовал так не работает...:( Ошибку выбивает: http://rghost.ru/53729756

    Код (Text):
    1. var
    2. hCancelUninstBtn: HWND;
    3. ButtonFontU:TFont;
    4.  
    5. procedure BtnSetFontU(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\b2p.dll stdcall delayload';
    6.  
    7. procedure InitializeUninstallProgressForm();
    8. begin
    9. ButtonFontU:=TFont.Create;
    10. with ButtonFontU do begin
    11. Name:='Tahoma';
    12. Size:= 8;
    13. Style:=[];
    14. end;
    15.  
    16. with UninstallProgressForm.CancelButton do begin    
    17. BtnSetFontU(hCancelUninstBtn,ButtonFontU.Handle);
    18. end;
     
  12. Old Men Проверенный

    Регистрация:
    17 июн 2011
    Сообщения:
    469
    Симпатии:
    448
    Пол:
    Мужской
    Shift85, попробуй не изобретать велосипед,
    [SOURCE="inno"]var
    hCancelUninstBtn: HWND;
    ButtonFontU:TFont;

    procedure InitializeUninstallProgressForm();
    begin
    ButtonFontU:=TFont.Create;
    with ButtonFontU do begin
    Name:='Tahoma';
    Size:= 8;
    Style:=[];
    end;

    with UninstallProgressForm.CancelButton do begin
    BtnSetFont(hCancelUninstBtn,ButtonFontU.Handle);
    end;[/SOURCE]
    Сам не пробовал, так, что со 100% уверенностью сказать не могу.
    Подразумевается, что procedure BtnSetFont(h :HWND; Font :Cardinal); external 'BtnSetFont@{tmp}\b2p.dll stdcall delayload'; у тебя где-то уже прописана.
     
    Последнее редактирование: 3 апр 2014
    Shift85 нравится это.
Статус темы:
Закрыта.

Поделиться этой страницей