|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
Ветеран Сообщения: 1264 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Отправлено: 03:49, 21-05-2012 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать SatHan,
Function CheckRegGame1: Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') then Result:= True else Result := False; end; Function CheckRegGame2: Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') then Result:= True else Result := False; end; Function CheckRegGame3: Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1') then Result:= True else Result := False; end; Function InitializeSetup: Boolean; Begin if ( (not CheckRegGame1) and (not CheckRegGame2) and (not CheckRegGame3) ) then begin MsgBox('на компьютере не найдено установлено игр', mbInformation, MB_OK); Result := False; end; end; |
------- Отправлено: 16:53, 06-09-2012 | #831 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y., опять проблема. когда в системе ключи присутствуют то инсталятор не запускается. Как решить проблему?
|
Последний раз редактировалось SatHan, 06-09-2012 в 17:17. Отправлено: 17:03, 06-09-2012 | #832 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 17:13, 06-09-2012 | #833 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y., на Result-е тот что идёт после MsgBox останавливается и выдаёт ошибку с сообщением identifier expected.
|
Отправлено: 17:25, 06-09-2012 | #834 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
они и так инициализируются при запуске или при работе процедуры вот смотри ты 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, 06-09-2012 в 17:55. Отправлено: 17:42, 06-09-2012 | #835 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Johny777, через getIniString я ручками получаю с десяток нужных мне переменных из инишника, заношу только не в аррэй а в десять переменных и с ними дальше работаю. Я вообще не понимаю целесообразности вопроса.
SatHan, [ Code] Function CheckRegGame1: Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game1_is1') then Result:= True else Result := False; end; Function CheckRegGame2: Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game2_is1') then Result:= True else Result := False; end; Function CheckRegGame3: Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Game3_is1') then Result:= True else Result := False; end; Function InitializeSetup: Boolean; Begin Result := True; if ( (CheckRegGame1) and (CheckRegGame2) and (CheckRegGame3) ) then Result := True else begin MsgBox('На компьютере не найдено установленых игр', mbInformation, MB_OK); Result := false; end; end; end. |
------- Отправлено: 17:47, 06-09-2012 | #836 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать SatHan,
Ну скрыть компоненты не получится, тк в инно нет свойства ItemVisible, можно сделать так как вариант: |
Отправлено: 17:58, 06-09-2012 | #837 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Цитата 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:
[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; |
|||
Последний раз редактировалось Johny777, 06-09-2012 в 18:08. Отправлено: 17:59, 06-09-2012 | #838 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Snoopak96, ты в этом ошибаешься, если в моем примере выше подчековая функция вернет фолсе то в списке компонентов соответствующей строчки не будет, проверь сам
Johny777, чуток осталось |
------- Отправлено: 18:02, 06-09-2012 | #839 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y., я про свойство ItemVisible, а у тебя строит компонент лист на ходу при старте, путаешь ты хотя и так тоже можно сделать.
|
Отправлено: 18:08, 06-09-2012 | #840 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|