Скрипты Inno Setup. Помощь и советы [часть 5]
-
HElmo
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Ооо... Как можно первый раз столкнуться с тем, с чего обычно начинают? Почитайте справку на ночь - очень просветляет.
-
Gnom_aka_Lexander
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Gnom_aka_Lexander,
Англоязычная версия..,пожалуйста, просто изучать конкретно нет времени, пожалуйста. Что с этим кодом делать. Заранее спасибо.
Англоязычная версия..,пожалуйста, просто изучать конкретно нет времени, пожалуйста. Что с этим кодом делать. Заранее спасибо.
-
Ivan_009
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
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]
R.i.m.s.k.y., на Result-е тот что идёт после MsgBox останавливается и выдаёт ошибку с сообщением identifier expected.
-
Ivan_009
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Цитата R.i.m.s.k.y.:
я в таких случая тупо инициализирую в память на начальном шаге все нужные переменные, благо их немного
Не совсем понял
они и так инициализируются при запуске или при работе процедуры
вот смотри
ты 10 раз открываешь файл с жёсткого диска чтоб взять из него значение (10 значений)
или открываешь 1 раз, пишешь все 10 значений в переменную массива и потом работаешь уже с переменной тк она в оперативке (в стеке кажись.)
а из оперативы брать быстрее в разы чем раскручивать жд
понимаешь зачем мне массив
до последнего времени я обходился простой GetIniString но это малость неразумно когда нужно считывать не 1 и не 2 знчения, а больше в разы
SatHan,
Код:
я в таких случая тупо инициализирую в память на начальном шаге все нужные переменные, благо их немного
Скрипты 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]
Вань,
я исдан не знаю, но сильно сомневаюсь что это один прогрессбар
думаю товарищъ-автор инсталла скрин которого ты предоставил просто укоротил верхний прогрессбар и разместил его на том же уровне что и второй и слева от него
я уверен что поделённого на 2 части прогрессбара нет, если только ты его сам не создаёшь (пусть програмисты меня не пинают. Только-только начал паскаль изучать)
я исдан не знаю, но сильно сомневаюсь что это один прогрессбар
думаю товарищъ-автор инсталла скрин которого ты предоставил просто укоротил верхний прогрессбар и разместил его на том же уровне что и второй и слева от него
я уверен что поделённого на 2 части прогрессбара нет, если только ты его сам не создаёшь (пусть програмисты меня не пинают. Только-только начал паскаль изучать)
-
HElmo
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Gnom_aka_Lexander, Ivan_009, Огромное спасибо, с компонентами разобрался, получилось!!!Ура ура!Правда с 17 раза
.
Теперь есть ещё одна задача, все файлы допустим устанавливаются в директорию: D:\Games\game\mods\version1 как указал пользователь, затем программа выходит две папки назад, попадает в папку: D:\Games\game и в нее распаковывает ещё одну папку с файлами, а после нажатия готово открывает ее. Вроде понятно описал, возможно ли это реализовать? Я так понял это как-то в секции Tasks пишется..Заранее спасибо...
.Теперь есть ещё одна задача, все файлы допустим устанавливаются в директорию: D:\Games\game\mods\version1 как указал пользователь, затем программа выходит две папки назад, попадает в папку: D:\Games\game и в нее распаковывает ещё одну папку с файлами, а после нажатия готово открывает ее. Вроде понятно описал, возможно ли это реализовать? Я так понял это как-то в секции Tasks пишется..Заранее спасибо...
-
SatHan
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Цитата R.i.m.s.k.y.:
заношу только не в аррэй а в десять переменных и с ними дальше работаю
не использую переменные
вот пример кода Run_Game_CheckBox.Checked := (GetIniString('MySettings', 'Run_Games', '', ExpandConstant('{src}\Selfish.ini')) = '1'); (скоро сам всё увидишь когда докачаешь
)
Цитата R.i.m.s.k.y.:
Я вообще не понимаю целесообразности вопроса.
повышение скорости работы путём сокращения ненужных действий
ненужное действие у меня выполняется двумя ини - 10 считываний вместо одного
Цитата Snoopak96:
Ну скрыть компоненты не получится
в этом случае их можно прото не добавлять в чеклистбокс таким вот макаром
Код:
заношу только не в аррэй а в десять переменных и с ними дальше работаю
Скрипты 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]
SatHan, Скрипт покажи.
HElmo, Можно. Покажи структуру папок, как должно быть.
HElmo, Можно. Покажи структуру папок, как должно быть.
-
HElmo
Re: Скрипты Inno Setup. Помощь и советы [часть 5]
Gnom_aka_Lexander,
Вот весь код
Код:
Путь установки: 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 . Заранее спасибо за помощь.
Вот весь код
читать дальше »
Код:
Код: Выделить всё
#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 . Заранее спасибо за помощь.