Скрипты Inno Setup. Помощь и советы [часть 5]

Ответить
 • Просмотры: 13
Аватара пользователя
HElmo

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение HElmo »

Ооо... Как можно первый раз столкнуться с тем, с чего обычно начинают? Почитайте справку на ночь - очень просветляет.
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Gnom_aka_Lexander »

Gnom_aka_Lexander,

Англоязычная версия..,пожалуйста, просто изучать конкретно нет времени, пожалуйста. Что с этим кодом делать. Заранее спасибо.
Аватара пользователя
Ivan_009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Ivan_009 »

SatHan,

Код:

Код: Выделить всё

Function InitializeSetup: Boolean;
Begin
Result := True;
if ( (not CheckRegGame1) and (not CheckRegGame2) and (not CheckRegGame3) ) then begin
MsgBox('На компьютере не найдено установленых игр', mbInformation, MB_OK);
Result := False else Result := True;
end;
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Gnom_aka_Lexander »

R.i.m.s.k.y., на Result-е тот что идёт после MsgBox останавливается и выдаёт ошибку с сообщением identifier expected.
Аватара пользователя
Ivan_009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Ivan_009 »

Цитата R.i.m.s.k.y.:



я в таких случая тупо инициализирую в память на начальном шаге все нужные переменные, благо их немного
Скрипты Inno Setup. Помощь и советы [часть 5]




Не совсем понял

они и так инициализируются при запуске или при работе процедуры

вот смотри

ты 10 раз открываешь файл с жёсткого диска чтоб взять из него значение (10 значений)

или открываешь 1 раз, пишешь все 10 значений в переменную массива и потом работаешь уже с переменной тк она в оперативке (в стеке кажись.)

а из оперативы брать быстрее в разы чем раскручивать жд



понимаешь зачем мне массив

до последнего времени я обходился простой GetIniString но это малость неразумно когда нужно считывать не 1 и не 2 знчения, а больше в разы



SatHan,



Код:

Код: Выделить всё

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[  Code]
Function CheckRegGame(nParam: Integer): Boolean;
begin
 case nParam of
    1: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1');
    2: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1');
    3: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1');
  else
    Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1')
  end;
end;
Function InitializeSetup: Boolean;
Begin
  if not CheckRegGame(0) then
  begin
    MsgBox('На компьютере не найдено установленых игр', mbInformation, MB_OK);
    Result := False;
  end else
  Result := True;
end;
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Johny777 »

Вань,

я исдан не знаю, но сильно сомневаюсь что это один прогрессбар

думаю товарищъ-автор инсталла скрин которого ты предоставил просто укоротил верхний прогрессбар и разместил его на том же уровне что и второй и слева от него

я уверен что поделённого на 2 части прогрессбара нет, если только ты его сам не создаёшь (пусть програмисты меня не пинают. Только-только начал паскаль изучать)
Аватара пользователя
HElmo

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение HElmo »

Gnom_aka_Lexander, Ivan_009, Огромное спасибо, с компонентами разобрался, получилось!!!Ура ура!Правда с 17 раза Изображение.

Теперь есть ещё одна задача, все файлы допустим устанавливаются в директорию: D:\Games\game\mods\version1 как указал пользователь, затем программа выходит две папки назад, попадает в папку: D:\Games\game и в нее распаковывает ещё одну папку с файлами, а после нажатия готово открывает ее. Вроде понятно описал, возможно ли это реализовать? Я так понял это как-то в секции Tasks пишется..Заранее спасибо...
Аватара пользователя
SatHan

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение SatHan »

Цитата R.i.m.s.k.y.:



заношу только не в аррэй а в десять переменных и с ними дальше работаю
Скрипты Inno Setup. Помощь и советы [часть 5]




не использую переменные

вот пример кода Run_Game_CheckBox.Checked := (GetIniString('MySettings', 'Run_Games', '', ExpandConstant('{src}\Selfish.ini')) = '1'); (скоро сам всё увидишь когда докачаешь Изображение )




Цитата R.i.m.s.k.y.:



Я вообще не понимаю целесообразности вопроса.
Скрипты Inno Setup. Помощь и советы [часть 5]




повышение скорости работы путём сокращения ненужных действий

ненужное действие у меня выполняется двумя ини - 10 считываний вместо одного




Цитата Snoopak96:



Ну скрыть компоненты не получится
Скрипты Inno Setup. Помощь и советы [часть 5]




в этом случае их можно прото не добавлять в чеклистбокс таким вот макаром



Код:

Код: Выделить всё

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Components]
Name: game_1; Description: Game_1; Flags: dontinheritcheck; Types: full; Check: CheckRegGame(1);
Name: game_2; Description: Game_2; Flags: dontinheritcheck; Types: full; Check: CheckRegGame(3);
Name: game_3; Description: Game_3; Flags: dontinheritcheck; Types: full
[  Code]
Function CheckRegGame(nParam: Integer): Boolean;
begin
 case nParam of
    1: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1');
    2: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1');
    3: Result:= RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1');
  else
    Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') and
              RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1')
  end;
end;
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Gnom_aka_Lexander »

SatHan, Скрипт покажи.

HElmo, Можно. Покажи структуру папок, как должно быть.
Аватара пользователя
HElmo

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение HElmo »

Gnom_aka_Lexander,

Вот весь код
читать дальше »




Код:

Код: Выделить всё

#define MyAppName "MODSHELMO" 
#define MyAppVersion "2.0" 
#define MyAppPublisher "HELMO"
 #define MyAppURL "HELMO" 
[Setup]
AppId={{A4520E20-B884-4B0A-992C-07FC5D307AF2}
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
DefaultDirName={pf} 
DefaultGroupName={#MyAppName}
AllowNoIcons=yes 
OutputDir=C:\Users\Admin\Desktop
OutputBaseFilename=HELMO MODS 
SetupIconFile=D:\Загрузки\World-of-Tanks.ico 
Compression=lzma 
SolidCompression=yes
Uninstallable=no 
[Languages] 
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" 
[Files] 
Source: "C:\Users\Admin\Desktop\Jova\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs







Путь установки: D:\GAMES\World of tanks\World_of_tanks\res_mods\0.7.5, затем должно вернутся в папку World_of_tanks(не World of tanks) и туда распаковать папку из следующей дирректории: D:\GAMES\Mods, под названием Options и открыть ее. Но если пользователь выбрал другой путь, например С:\World_of_tanks\res_mods\0.7.5, тоже должно вернуться две папки назад в World_of_tanks . Заранее спасибо за помощь.
Ответить

Вернуться в «Автоматическая установка приложений»