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

Вопрос компоненты

Тема в разделе "Inno Setup", создана пользователем artemabu, 23 май 2018.

  1. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    как убрать количество мегабайт
    [​IMG]

    и заодно вопрос как сделать так чтобы допустим у меня две игры я хочу чтобы при выборе компонента распаковывалась определеный .arc Архив допустим the sims 2 the sims 3 the sims 4
     

    Вложения:

    • SETUP.rar
      Размер файла:
      19 МБ
      Просмотров:
      6
  2. Ветеран Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    370
    Симпатии:
    396
    Пол:
    Мужской
    artemabu, почитайте справку к IS Done, подробная и достоверная информации там, на все вопросы есть ответы. А так этот пост вкратце разъясняет принцип.
     
  3. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    разобрался с играми теперь помогите плис как убрать мегабайты
     
  4. Ветеран Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    370
    Симпатии:
    396
    Пол:
    Мужской
    artemabu, как понимать убрать мегабайты?
    Если скрыть TLabel с именем ComponentsDiskSpaceLabel:
    Код (Text):
    WizardForm.ComponentsDiskSpaceLabel.Hide;
    А если нужно изменить единицу измерения (например только Гб), то:
    Код (Inno):

    // 1048576 = 1 mb (если число больше 2047 то MbSize не работает. ограничение integer)
    // тогда прописывать вручную
    #define MbSize(x) x*1048576

    //===== [Место для установки] =====\\:
    #define NeedSize "512"

    [setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={pf}
    //ShowComponentSizes=no
    //DirExistsWarning=no
    OutputDir=.

    [Languages]
    Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

    [Components]
    Name: Mode; Description: mode; Types: custom; flags: fixed
    Name: Mode/SPOnly; Description: SPOnly; ExtraDiskSpaceRequired: {#MbSize(100)};  Types: full; Flags: disablenouninstallwarning
    Name: Mode2; Description: mode2; Types: custom; flags: fixed
    Name: Mode2/SPOnly2; Description: SPOnly2; ExtraDiskSpaceRequired: {#MbSize(101)}; Flags: disablenouninstallwarning
    Name: Mode2/MPOnly2; Description: MPOnly2; ExtraDiskSpaceRequired: {#MbSize(524)}; Flags: disablenouninstallwarning

    [Files]
    //Source: Arc.exe; DestDir: {tmp}; Flags: dontcopy

    [Code]
    var
      Label1: TLabel;
      OldEvent_ComponentsListClickCheck: TNotifyEvent;
      DsE,SSize: Extended;

    function GetFloatFormText(const UndefText: String): Extended;
    var
      i: Integer;
      ss: string;
    begin
      for i := 1 to Length(UndefText) do
      case UndefText[i] of
        '0','1','2','3','4','5','6','7','8','9': ss := ss + UndefText[i];
        ',': ss := ss + '.';
      end;
      Result:= StrToFloat(ss);
    end;

    function NumToStr(Float: Extended): String;
    begin
      Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
    while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
      SetLength(Result, Length(Result)-1);
    end;

    function MbOrTb(Float: Extended): String;
    begin
      if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб';
    end;

    procedure DiskSpaceLabel(Sender: TObject);
    begin
      OldEvent_ComponentsListClickCheck(Sender);
      DsE:= GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption)+{#NeedSize}+SSize;
      Label1.Caption:= 'Текущий выбор требует не менее '+MbOrTb(DsE)+' на диске.';
    end;

    procedure InitializeWizard;
    var
      i: Integer;
      k: Array [0..99] of Boolean; // массив на 100 эл-ов
    begin
      OldEvent_ComponentsListClickCheck := WizardForm.ComponentsList.OnClickCheck;
    for i:=0 to WizardForm.ComponentsList.ItemCount-1 do
    if WizardForm.ComponentsList.Checked[i] then
      k[i]:= True;
    for i:=0 to WizardForm.ComponentsList.ItemCount-1 do
      WizardForm.ComponentsList.Checked[i]:= False;
      WizardForm.ComponentsList.OnClickCheck(nil);
      SSize:= GetFloatFormText(WizardForm.DiskSpaceLabel.Caption)-GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption);
    for i:=0 to WizardForm.ComponentsList.ItemCount-1 do
      WizardForm.ComponentsList.Checked[i]:= k[i];
      OldEvent_ComponentsListClickCheck(nil);
      DsE:= GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption)+{#NeedSize}+SSize;
    //
    Label1 := TLabel.Create(WizardForm);
      with Label1 do
      begin
        Parent := WizardForm.ComponentsDiskSpaceLabel.Parent;
        Caption:= 'Текущий выбор требует не менее '+MbOrTb(DsE)+' на диске.';
        SetBounds(WizardForm.ComponentsDiskSpaceLabel.Left, WizardForm.ComponentsDiskSpaceLabel.Top, WizardForm.ComponentsDiskSpaceLabel.Width, WizardForm.ComponentsDiskSpaceLabel.Height);
        Font.Color:= clBlue;
        Transparent:= True;
      end;
      WizardForm.ComponentsList.OnClickCheck:= @DiskSpaceLabel;
      WizardForm.ComponentsDiskSpaceLabel.Hide;
      WizardForm.DiskSpaceLabel.Hide;
    end;
     
     
  5. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    как сделать так что определенные галочки уже стояли например русский
    [​IMG]
     
  6. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    и как сделать проверку диска на определенный компент
     
  7. Ветеран Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    370
    Симпатии:
    396
    Пол:
    Мужской
    artemabu, Flags: "Exclusive" для обоих компонентов.
    artemabu, если проверку на свободного места, а если нет то не ясен смысл.

    P.S.: Прежде чем задать вопрос, попробуйте найти решение сами, а то в справке по Inno Setup все это есть, в определенных главах.
     
  8. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    решил заняться разбивкой скрипта на модули
    [​IMG]
     

    Вложения:

    • skript.rar
      Размер файла:
      19 МБ
      Просмотров:
      7
  9. Ветеран Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    370
    Симпатии:
    396
    Пол:
    Мужской
    artemabu, ошибка в том что вызываемая процедура должна быть прописана раньше чем присваивается. Исключением является тот случай, если была задействована директива forward (но и тогда, процедура прописывается в начале кода). Проще говоря, нужно либо переместить процедуру CancelButtonOnClick раньше чем присваивается, либо добавить строку (procedure CancelButtonOnClick(Sender: TObject); forward) в начало модуля isdone.iss.
     
  10. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    и последнее как присвоить registry.ss к определенному компоненту допустим у меня две игры в одном или несколько
     
  11. Ветеран Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    370
    Симпатии:
    396
    Пол:
    Мужской
    artemabu, ИМХО через параметр Components в самой секции (но это не точно). Например:
    Код (Text):
    Components: text\rus;
    Внизу пример, как по мне будет правильнее, с botva и без мусора:
     

    Вложения:

    • Script.7z
      Размер файла:
      909,3 КБ
      Просмотров:
      3
  12. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    то-есть примерно так или я чего не понимаю
    Код (Text):

    Components: text\rus; registry1.iss
    Components: text\rus; registry2.iss
     
  13. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.184
    Симпатии:
    757
    Components: text\rus; registry1.iss
    Components: text\eng; registry2.iss
    возможно.
     
  14. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    sergey3695
    создать секцию rum
    Можно намного проще
    Код (Text):

    [Run]
    Filename: {win}\regedit.exe; Parameters: /s {tmp}\рег.reg; StatusMsg: "Вносим изменения в реестр ..."; Flags: waituntilterminated runasoriginaluser; Components: g0
    Filename: {win}\regedit.exe; Parameters: /s {tmp}\рег.reg; StatusMsg: "Вносим изменения в реестр ..."; Flags: waituntilterminated runasoriginaluser; Components: g1
     
  15. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.184
    Симпатии:
    757
    artemabu, [Registry] - в справке есть.
     

    Вложения:

  16. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    спасибо за скрпит кстати бро.
    а что делает скрпит botva??
     
  17. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.184
    Симпатии:
    757
  18. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    все таки пытаюсь я как то присвоить значение реестра к компоненту и ни как
    [​IMG]
     
  19. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.184
    Симпатии:
    757
    а в regisrty1.iss что?
     
  20. Новичок

    Регистрация:
    21 май 2018
    Сообщения:
    18
    Симпатии:
    0
    [​IMG]
     

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