Jump to content
Korean Random

sergey spb

User
  • Content Count

    131
  • Joined

  • Last visited

Posts posted by sergey spb


  1. Ещё один вопрос.

    Как вместо Abort прикрутить закрытие инсталлятора?

    (т.е. если ДА закрывается игра, если НЕТ инсталлятор)

     

    Function InitializeSetup1(): Boolean;

    begin

      if RunTask('WorldOfTanks.exe', false) then

       begin

        if MsgBoxEx(0, 'World of Tanks запущена!',

         'Необходимо закрыть мгру!', MB_YESNO or MB_ICONQUESTION, 0, 0) = idYes then

       begin

        KillTask('WorldOfTanks.exe');

      end

       else

       begin

        Abort;

    end;


  2. 
    
    Procedure InitializeWizard1();
    begin
     ...
     ...
    end;
    
    Procedure InitializeWizard2();
    begin
     ...
     ...
    end;
    
    Procedure InitializeWizard();
    begin
     InitializeWizard1();
     InitializeWizard2();
    end;
    

    Спасибо!!!

    Буду пробовать.

    По другому:

    .....

    procedure RedesignWizardForm;

    var

    i: integer;

      BtnPanel: TPanel;

      BtnImage: TBitmapImage;

    begin

      ExtractTemporaryFile('logo.bmp')

      BtnPanel:=TPanel.Create(WizardForm)

      with BtnPanel do begin

        Left:=1

        Top:=314

        Width:=46

        Height:=45

        Cursor:=crHand

        OnClick:=@logoOnClick

        Parent:=WizardForm

      end;

      BtnImage:=TBitmapImage.Create(WizardForm)

      with BtnImage do begin

        AutoSize:=True;

        Enabled:=False;

        Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')

        Parent:=BtnPanel

      end;

      with WizardForm do

      begin

        Caption := ExpandConstant('{cm:Main}');

      end;

      with WizardForm.WizardBitmapImage do

      begin

        Width := ScaleX(502);

      end;

      with WizardForm.WelcomeLabel2 do

      begin

        Visible := False;

      end;

      with WizardForm.WelcomeLabel1 do

      begin

        Visible := False;

      end;

      with WizardForm.WizardSmallBitmapImage do

      begin

        Left := ScaleX(0);

        Width := ScaleX(502);

        Height := ScaleY(70);

      end;

      with WizardForm.PageDescriptionLabel do

      begin

        Visible := False;

      end;

      with WizardForm.PageNameLabel do

      begin

        Visible := False;

      end;

      with WizardForm.WizardBitmapImage2 do

      begin

        Width := ScaleX(502);

      end;

      with WizardForm.FinishedLabel do

      begin

        Visible := False;

      end;

      with WizardForm.FinishedHeadingLabel do

      begin

        Visible := False;

      end;

    end;

    procedure ShowPicHint(const PicFilePath: String);

    var

        pt: TPoint;

    begin

        if not GetCursorPos(pt) then Exit;

        InfoPic.Bitmap.LoadFromFile(PicFilePath);

        try

            with PicForm do

            begin

                SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);

                Show;

            end;

        finally

            SetFocus(WizardForm.Handle);

        end;

    end;

    procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);

    var

        UndefPic: String;

    begin

        if Index = -1 then Exit;

        if Index = LastIndex then Exit;

        try

    //--------------------------------------------------------------------------------------------------Êàðòèíêè-----------------------------------

            case TNewCheckListBox(Sender).ItemCaption[index] of

                'Öèôðû': UndefPic := '1.bmp'; // ïèøåì òî÷íî òàê æå, êàê ïðîïèñàíî â êîìïîíåíòàõ

                'Èêîíêè': UndefPic := '2.bmp';

                'Òóíäðà': UndefPic := '3.bmp';

                'Ðåíãåí': UndefPic := '4.bmp';

                'Dendy': UndefPic := '5.bmp';

                'Çâóêîâîå îïîâåùåíèå: äî êîíöà áîÿ,ôðàãè + ìåäàëè': UndefPic := '6.bmp';

            else

                begin

                    LastIndex := UNDEF_INDEX;

                    PicForm.Hide;

                    Exit;

                end;

            end;

            if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);

            ShowPicHint(TempPath + UndefPic);

        finally

            LastIndex := Index;

        end;

    end;

    procedure CompOnMouseLeave(Sender: TObject);

    begin

        PicForm.Hide;

        LastIndex := -1;

    end;

    procedure InitInfo();

    begin

        WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;

        WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;

        TempPath := AddBackslash(ExpandConstant('{tmp}'));

        LastIndex := UNDEF_INDEX;

        PicForm := TForm.Create(WizardForm)

        with PicForm do

        begin

            BorderStyle := bsNone;

            FormStyle := fsStayOnTop;

            InfoPic := TBitmapImage.Create(PicForm)

            with InfoPic do

            begin

                Parent := PicForm;

                AutoSize := True;

            end;

        end;

        SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

        SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);

    end;

    Procedure CurPageChanged(CurPageID: Integer);

    var

    Reg, UninstallPath: String;

    ResultCode: Integer;

    begin

    case CurPageID of

    wpSelectComponents:

      begin

       Reg := ExpandConstant('Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppID")}_is1');

       if RegValueExists(HKLM, Reg, 'UninstallString') then

        RegQueryStringValue(HKLM, Reg, 'UninstallString', UninstallPath);

       if Length(UninstallPath) > 0 then

       begin

        case MsgBoxEx(WizardForm.Handle, 'Ðåêîìåíäóåòñÿ óäàëèòü ðàíåå óñòàíîâëåííóþ âåðñèþ ñáîðêè.' + #13#10 + 'Õîòèòå ñäåëàòü ýòî ñåé÷àñ?', 'ModPack SG', MB_YESNO or MB_ICONQUESTION, 0, 0) of

         IDYES: Exec(RemoveQuotes(ExpandConstant(UninstallPath)), '/SILENT /SUPPRESSMSGBOXES', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);

         IDNO: Exit;

        end;

       end;

      end;

    end;

    end;

    Function NextButtonClick(CurPageID: Integer): Boolean;

    begin

    Result := True;

    case CurPageID of

    wpSelectComponents:

      begin

       if WizardSelectedComponents(False) = '' then

       begin

        MsgBox('Íè îäèí èç êîìïîíåíòîâ íå âûáðàí!', mbInformation, MB_OK);

        Result := False;

       end;

      end;

    end;

    end;

    procedure InitializeWizard();

    begin

      RedesignWizardForm;

      InitInfo();

      RedesignWizardForm;

      InitializeWizard2();

      BackupCheck_1();

    end;

     

     

    post-31076-0-39948800-1427822622_thumb.jpg

    • Downvote 1

  3. Добрый вечер.

     

    Делаю картинку внизу страницы со ссылкой:

     

     

    [Files]
    Source: logo.bmp; DestDir: {tmp}; Flags: dontcopy nocompression


    var
    LogoImage:TBitmapImage;
    LogoPanel: TPanel;
    LogoLabel: TLabel;

    procedure LogoLabelOnClick(Sender: TObject);
    var
    ErrorCode: Integer;
    begin
      ShellExec('open', 'http ://forum.ru-board.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
    end;

    procedure InitializeWizard();
    /////////////////
    begin
      LogoPanel := TPanel.Create(WizardForm);
    with LogoPanel do
    begin
      Parent := WizardForm;
      Left := ScaleX(8);
      Top := ScaleY(327);
      Width := ScaleX(120);
      Height := ScaleY(28);
      BevelOuter := bvNone;
    end;

      LogoImage := TBitmapImage.Create(WizardForm);
    with LogoImage do
    begin
      Parent := LogoPanel;
      Left := ScaleX(0);
      Top := ScaleY(0);
      AutoSize:=true;
      ReplaceColor:=clFuchsia;
      ReplaceWithColor:=clBtnFace;
      ExtractTemporaryFile('logo.bmp');
      Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
    end;

      LogoLabel := TLabel.Create(WizardForm);
    with LogoLabel do
    begin
      Parent := LogoPanel;
      Width := LogoPanel.Width;
      Height := LogoPanel.Height;
      Transparent:=True;
      Cursor := crHand;
      OnClick:=@LogoLabelOnClick;
    end;
    end;

     

    Ругаеться:

    post-31076-0-92635900-1427817546_thumb.jpg


  4.  

    @sergey spb, ну по твоему варианту лучше будет использовать свойство OnClickCheck.

    А вообще, для работы с кнопкой "далее", лучше использовать выделенную под неё функцию:

    
    
    Function NextButtonClick(CurPageID: Integer): Boolean;
    begin
     Result := True;
     case CurPageID of
     wpSelectComponents:
      begin
       if WizardSelectedComponents(False) = '' then
       begin
        MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
        Result := False;
       end;
      end;
     end;
    end;
    

    Большое СПАСИБО!!!


  5. Добрый день!

    Как добиться такого, чтобы кнопка "Далее" становилась неактивна, когда не выбран ни один компонент [Components] во время установки? Ведь нет никакого смысла ставить, если ничего не выбрано!

    Делал так:

     

    procedure ComponentOnClick(Sender: TObject);
    begin
    if WizardSelectedComponents(False) = '' then
    WizardForm.NextButton.Enabled:= False
    else WizardForm.NextButton.Enabled:= True;
    end;

    procedure InitializeWizard();
    begin
    WizardForm.ComponentsList.OnClick := @ComponentOnClick;
    end;

     

    но дальше первой страницы не пускает, не выбран компонент (из-за картинки не видно).

    Как отключить первую страницу?

     

    Может кому надо InnoSetupFAQ:InnoSetupFAQ_ru-board.rar


  6. @sergey spb,

    
    
    
    
    
    
    [Setup]
    DirExistsWarning=no
    

    Обо всех параметрах секции [setup] написано в справке.

    Спасибо уже нашёл!

    А не подскажешь как  поменять надпись:

     

    post-31076-0-79193300-1427374546_thumb.jpg

     

     

    Взято от сюда:

     

    #define SourceDir "res_mods";

    #define BackupDir "old_res_mods";

    [setup]

    AppName=Test

    AppVersion=1.5

    DefaultDirName={pf}\Test

    OutputDir=.

    var

      BackupCheck: TCheckBox;

    procedure CopyFiles(FromPlace, ToPlace: String);

    var

        ResultCode: Integer;

    begin

        Exec('xcopy.exe', '/E /C /H /R /Y /F /I ' + AddQuotes(FromPlace) + ' ' + AddQuotes(ToPlace), ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);

    end;

    procedure BackupCheckCreate();

    begin

      BackupCheck:=TCheckBox.Create(WizardForm);

        with BackupCheck do

          begin

            Parent:=WizardForm.SelectDirPage;

            SetBounds(ScaleX(WizardForm.DirEdit.Left), ScaleY(WizardForm.DirEdit.Top + 40), ScaleX(WizardForm.DirEdit.Width), ScaleY(15));

            Caption:='Сохранить резервную копию перезаписываемых файлов';

            Checked:=True;

          end;

    end;

    procedure BackUp(CurStep: TSetupStep);

    var

        ThereIsFolders: Boolean;

    begin

      if BackupCheck.Checked then

      begin

        ThereIsFolders:=(DirExists(AddBackslash(WizardDirValue()) + '{#SourceDir}') and (not DirExists(AddBackslash(WizardDirValue()) + '{#BackupDir}')) );

        if ThereIsFolders then

        if CurStep=ssInstall then

          begin

            WizardForm.ProgressGauge.Hide;

            WizardForm.StatusLabel.Caption:='Создание резервных копий файлов...';

            CopyFiles(ExpandConstant('{app}') + '\{#SourceDir}\*.*', ExpandConstant('{app}') + '\{#BackupDir}');

            WizardForm.ProgressGauge.Show;

            WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);

          end;

      end;

    end;

    procedure InitializeWizard();

    begin

      BackupCheckCreate();

    end;

    procedure CurStepChanged(CurStep: TSetupStep);

    begin

       BackUp(CurStep);

    end;

    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

    begin

        if CurUninstallStep = usPostUninstall then

          begin

            CopyFiles(ExpandConstant('{app}') + '\{#BackupDir}\*.*', ExpandConstant('{app}') + '\{#SourceDir}');

            DelTree(ExpandConstant('{app}') + '\{#BackupDir}', True, True, True);

          end;

    end;


  7. Добрый день! Проблема в установки шрифта в систему Win7:

     

    Source: "dynamic.otf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall fontisnttruetype; FontInstall: "dynamic"; Components: Sh;

     

    Проблема такая-же и так делал.

     

    Сделал, вроде работает:

    Source: "dynamic.otf"; DestDir: "{fonts}"; Flags: fontisnttruetype; FontInstall: "dynamic"


  8. Можно ещё, убрать это окно, что-бы не появлялось или автоматом говорила "Да"?

    post-31076-0-58557100-1427107880_thumb.jpg
     
    т.к. появляется: если запускаешь второй раз и компонент не выбираешь, а выбираешь другой. Хотя уже всё удалил ранее..

  9.  

    Здесь текст, который будет отображаться в диалоговом окне:

    
    
    'Рекомендуется удалить ранее установленную версию сборки.' + #13#10 + 'Хотите сделать это сейчас?',
    

    Здесь текст заголовка окна:

    
    
    '...',
    

    Блин сорри не увидел! Ещё раз Спасибо!


  10. 
    
    [Code]
    Procedure CurStepChanged(CurStep: TSetupStep);
    var
     Reg, UninstallPath: String;
     ResultCode: Integer;
    begin
     if CurStep = ssInstall then
     begin
      Reg := ExpandConstant('Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppID")}_is1');
      if RegValueExists(HKLM, Reg, 'UninstallString') then
       RegQueryStringValue(HKLM, Reg, 'UninstallString', UninstallPath);
      if Length(UninstallPath) > 0 then
      begin
       case MsgBoxEx(WizardForm.Handle, 'Рекомендуется удалить ранее установленную версию сборки.' + #13#10 + 'Хотите сделать это сейчас?', '...', MB_YESNO or MB_ICONQUESTION, 0, 0) of
        IDYES: Exec(RemoveQuotes(ExpandConstant(UninstallPath)), '/SILENT /SUPPRESSMSGBOXES', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
        IDNO: Exit;
       end;
      end;
     end;
    end;
    

    Пробуй.

    p.s. немного подправил.

     

    С П А С И Б О! Я так и хотел! Ранее выбранные элементы сохраняються как активные!!!!!!!!

    Тогда ещё : "Рекомендуется удалить ранее .... и т.д" как отредактировать текст?

    • Upvote 1

  11. -

    Когда именно должен спросить и когда именно должен удалить?

    Второй раз запускаешь (т.е. уже установлены какие-то файлы и "unins000.exe") и спрашивает: удалить? Если : да, то запускаеться "unins000.exe" от первой установки и удаляет все компоненты, затем идет выбор компонентов для новой (второй) установки.

×
×
  • Create New...