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

Статус
В этой теме нельзя размещать новые ответы.

ilzok17

Новичок
Подскажите пожалуйста,а нет случайно примера скрипта для установки обновления игры (просто замены нескольких файлов),но так чтобы можно было упаковать туда и файлы обновления, и оригиналы,и при запуске инсталлятора был выбор - обновить игру xxxxxxxxxx..., и вернуть оригинальную версию игры xxxxxxxxxx...?Спасибо.
И было бы совсем идеально,чтобы инсталлятор сам находил установленную игру.
 
Последнее редактирование:

EvilAlex

Старожил
Приветствую всех форумчанинов)))
Подскажите пожалуйста, а еще лучше если можете дайте скриптик чтобы прогресс установки и ярлычок инсталла отображался в реестре панели быстрого запуска !?
А именно нужно чтобы был ярлык и при наведении на него вылазило "Установлено: 10% Ждите..." как то так))
 

Adil

Старожил
Всем добрый день, хотел сделать смену языка через кнопки, но возникла проблема на странице инсталляции, т.е.
2 лэбла (Labeltime1 и Labeltime2) они не меняются, как сделать чтобы они менялись?

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:pAnsiChar; LangButton:Tbutton): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
if LangButton.Caption := 'Eng' then LabelTime1.Caption:='Прошло: '+TimeStr2 else LabelTime1.Caption:='Elapsed time: '+TimeStr2;
LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
WizardForm.Caption:= ExpandConstant('{cm:Installing} ')+ExpandConstant('{cm:InsReady} ') +LabelPct1.Caption;
Result := ISDoneCancel;
end;
Этот пример не работает)
 

Mailchik

Старожил
Проверенный
Всем добрый день, хотел сделать смену языка через кнопки, но возникла проблема на странице инсталляции, т.е.
Код:
function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAn siChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
  case LangButton.Caption of
   'Rus': LabelTime1.Caption:='Elapsed Time '+TimeStr2;
   'Eng': LabelTime1.Caption:='Прошло времени '+TimeStr2;
  end;
LabelTime2.Caption:=ExpandConstant('{cm:RemainingT ime} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsed Time}')+TimeStr3;
WizardForm.Caption:= ExpandConstant('{cm:Installing} ')+ExpandConstant('{cm:InsReady} ') +LabelPct1.Caption;
Result := ISDoneCancel;
end;
 
  • Like
Реакции: Adil

Adil

Старожил
Всем привет,
Код:
[Components]
Name: Rus (1.0.6.1); Description: Русская версия; Flags: fixed; Types: full
Name: Eng (1.0.7.0); Description: Английская версия; Flags: exclusive

Name: Mods; Description: Моды (Rus):; Types: full; Flags: collapsed
Name: Mods\Weapons; Description: HD оружия; Types: full
Name: Mods\Cars; Description: Новые машины; Types: full
Name: Mods\Lens; Description: Качественные фары; Types: full
Name: Mods\VisualIV; Description: Установить мод VisualIV; Types: full

Name: Mods2; Description: Моды (Eng):; Types: full; Flags: collapsed
Name: Mods2\Asi Loader; Description: Загрузчик скриптов; Types: full
Name: Mods2\Simple Native Trainer; Description: Трэйнер; Types: full
Name: Mods2\Trafic Loader; Description: Разнообразный траффик; Types: full
Как сделать что бы при выборе Английской версии, не было активна секция Mods, а секция Mods2 была активна, и наобарот
заранее Спасибо)
 

Mailchik

Старожил
Проверенный
Как сделать что бы при выборе Английской версии, не было активна секция Mods, а секция Mods2 была активна, и наобарот
заранее Спасибо)
[SOURCE="inno"][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
ComponentsListTVStyle=true

[Components]
Name: Rus; Description: Русская версия; Flags: exclusive; Types: full
Name: Eng; Description: Английская версия; Flags: exclusive

Name: Mods; Description: Моды (Rus):; Types: full; Flags: collapsed
Name: Mods\Weapons; Description: HD оружия; Types: full
Name: Mods\Cars; Description: Новые машины; Types: full
Name: Mods\Lens; Description: Качественные фары; Types: full
Name: Mods\VisualIV; Description: Установить мод VisualIV; Types: full

Name: Mods2; Description: Моды (Eng):; Types: full; Flags: collapsed
Name: Mods2\Asi_Loader; Description: Загрузчик скриптов; Types: full
Name: Mods2\Simple_Native_Trainer; Description: Трэйнер; Types: full
Name: Mods2\Trafic_Loader; Description: Разнообразный траффик; Types: full

Код:
procedure ComponentsClick(Sender: TObject);
begin
  with WizardForm.ComponentsList do begin
    if Checked[1] then begin
      ItemEnabled[2]:= False;
      ItemEnabled[3]:= False;
      ItemEnabled[4]:= False;
      ItemEnabled[5]:= False;
      ItemEnabled[6]:= False;
      ItemEnabled[7]:= True;
      ItemEnabled[8]:= True;
      ItemEnabled[9]:= True;
      ItemEnabled[10]:= True;
    end else begin
      ItemEnabled[2]:= True;
      ItemEnabled[3]:= True;
      ItemEnabled[4]:= True;
      ItemEnabled[5]:= True;
      ItemEnabled[6]:= True;
      ItemEnabled[7]:= False;
      ItemEnabled[8]:= False;
      ItemEnabled[9]:= False;
      ItemEnabled[10]:= False;
    end;
  end;
end;

procedure InitializeWizard();
begin
  with WizardForm.ComponentsList do begin
    OnClickCheck:= @ComponentsClick;
    ComponentsClick(nil);
  end;
end;
[/SOURCE][/SPOILER]
 
  • Like
Реакции: Adil

AntiAngel

Новичок
Есть вопросец как сдеать так чтобы файл копировася только на WIndows 8
 

Mailchik

Старожил
Проверенный
AntiAngel,
[SOURCE="inno"][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

Код:
function InitializeSetup() : boolean;
var
  Version: TWindowsVersion;
 begin
  GetWindowsVersionEx(Version);
   if (Version.Major = 6) and (Version.Minor = 2) then  //6.2 Windows 8
    Result := True else Result := False;
end;[/SOURCE][/SPOILER]
 
  • Like
Реакции: Adil

AntiAngel

Новичок
Mailchik,
Значит к этому скрипту добавить
папку в секцию Files и там добавить MinVersion 6.2? Так?
 

AntiAngel

Новичок
Подскажите как сделать:
Если #define раскомпилирован то проиходит одна задача если нет то другая
 

Snoopak96

Старожил
AntiAngel,
Код:
#define Opana

[Setup]
AppName=Opana
AppVersion=Opana
DefaultDirName={pf}\Opana
DisableDirPage=yes
DefaultGroupName=Opana
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[**code**]
procedure InitializeWizard;
begin
#ifdef Opana
   WizardForm.Caption:= 'Опа на - включено!';
#else
   WizardForm.Caption:= 'выключено!';
#endif
end;
 

RUSSIA_23

Новичок
Доброго времени суток!
Я начинающий репакер, и хотел бы спросить совета (или точнее сказать - помощи).
1) Я хочу сделать нормальный репак, но мне не хватает функции, типо "Осталось времени до конца установки" и "Прошло времени"
Очень хотелось бы узнать, как это можно реализовать... Что надо вставить в скрипт? И куда вставить?
Надеюсь на Вашу помощь и доброту!

http://rghost.ru/41442369

2) Возможно, пишу не в той теме, просьба не пинать).
  • а) Чем отличается precomp04 от precomp038?
  • б) Есть ли шанс, что если один из них "обрушится" при сжатии игры, то другой "справится" с этой игрой?
  • в) Может ли один из них дать большее сжатие, чем другой?

3) Хочу скачать новый прекомп... Но как его установить?
4) Я не знаю как там сделать, чтобы были архивы типо Data-1.bin, Data-2.bin и т.д. Где это в скрипте прописать? И что прописать? А то я привык делать с одним единственным архивом - Data.bin. А вот как его разделить - не знаю... Прошу помощи!!!
 
Последнее редактирование:

Mailchik

Старожил
Проверенный
RUSSIA_23,
1. Файл удален.
Эти функции присутствуют в ISDone. Скачайте и тестируйте.
2. а) Чем отличается.
б) Тестируйте.
в) Так же тестируйте.
3. В смысле установить? Это консольный препроцессор. Создаёте bat'ник примерно с таким содержанием: precomp -intense test.pak. и прекомп работает с test.pak. Всё как с прошлыми версиями, короче говоря.
4. ISDone используете?
Код:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data2.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data3.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху