Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 3]

Ветеран


Сообщения: 1133
Благодарности: 581


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 900 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 798 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Лександер,
Так это и есть снаружи, параметр z передаешь инсталлеру, InitializeSetup проверяет задан ли он (в виде \z, /z, -z), если есть такой переменной paramZ присваивается Тру
И вот тут у меня ошибочка, paramZ : boolean; должен объявляться в начале секции Code что быть доступным все функциям.
Потом в конце установки (процедура CurStepChanged) если параметр тру - выполняем чего там хотели.
Цитата Лександер:
можно попробовать компонентами решить »
Я не буду фрагментировать моск мифическими Param1, дам прям кусок из своего инсталлера, повырезав лишнее, так что если будет ругаться что не объявлены переменные или Энда не хватает - допишите сами.
Код: Выделить весь код
[Components]
# define haaliaviDesc "Haali - воспроизводить avi"
Name: haaliavi; Description: {#haaliaviDesc}; Check: HaaliExists

[_Code]
var paramZ, silent, haaliavi : integer;

function InitializeSetup(): Boolean;
var i : integer; s, st : string;  
begin
  paramZ:= -1; silent:= -1; haaliavi := -1; // три состояния: -1 - не изменялось, 0 - нет, 1 - да
  for i:=2 to ParamCount do begin
    if ( (Lowercase(ParamStr(i)) = Lowercase('/silent')) or (Lowercase(ParamStr(i)) = Lowercase('/verysilent')) ) then begin
      silent := 1;
      break;
    end;
  end;
  for i:=2 to ParamCount do begin
    st := Lowercase(ParamStr(i)); StringChangeEx(st, '/', '', True); StringChangeEx(st, '\', '', True); StringChangeEx(st, '-', '', True);
    case st of 
      Lowercase('z') : paramZ := 1;
      Lowercase('haaliavi') : haaliavi := 1;
    end;
  end;
end;


procedure InitializeWizard();
  if (silent = 1) then begin
    if ( (haaliavi = 1) and haaliexists) then WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('{#haaliaviDesc}')]:=True;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var res : integer; 
begin
  if ( CurStep=ssDone) and (paramZ = 1) ) then Exec('x.exe', ' /z ' ,ExpandConstant('{...}'),SW_HIDE,ewWaitUntilTerminated,res);
end;

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:57, 06-01-2011 | #391



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Gnom_aka_Lexander

Ветеран


Сообщения: 978
Благодарности: 564

Профиль | Сайт | Отправить PM | Цитировать


R.i.m.s.k.y., Я неточно выразился, а что если для разных случаев нужно разные параметры? Для одного случая один ключ, для другог другой...

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 14:31, 06-01-2011 | #392


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Цитата Лександер:
Я неточно выразился, а что если для разных случаев нужно разные параметры? Для одного случая один ключ, для другог другой... »
поточнее чего хотим

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 14:49, 06-01-2011 | #393


Аватара для Gnom_aka_Lexander

Ветеран


Сообщения: 978
Благодарности: 564

Профиль | Сайт | Отправить PM | Цитировать


R.i.m.s.k.y., Смотри, комуто нужно ставить с ключем \z, комуто \r, комуто \a, комуто \s, и может еще полтора десятка, я не говорю о возможности их комбинации - можно это как-то реализовать? Или каждый ключ и комбинацию в коде прописывать?

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 16:27, 06-01-2011 | #394


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Цитата Лександер:
Или каждый ключ и комбинацию в коде прописывать? »
да, каждый поотдельности
инно понимает параметры только со слэшэм "/", т.е. если ему написать -silent или \silent он не поймет.
В моем примере выше собственные параметры можно писать вообще одной буквой z, но параметры инно надо писать как положено, /norestart к примеру.

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 17:55, 06-01-2011 | #395


Пользователь


Сообщения: 129
Благодарности: 9

Профиль | Отправить PM | Цитировать


R.i.m.s.k.y.,
брат, насколько знаю вместо [_code] в скрипте должен быть [code], а в конце вместо ; ТОЧКА. Если да, то во время компиляции пишет unknown identifier 'x'

Отправлено: 19:03, 06-01-2011 | #396


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Цитата vahe-91:
насколько знаю вместо [_code] »
Если написать без _ то форумный движок воспринимает его как тэг и каверкает, поэтому здесь принято добавлять _ перед словом Code.
Цитата vahe-91:
а в конце вместо ; ТОЧКА »
секция Code закрывается end.
если есть ошибки - исправь код, брат, он не кусается.
Цитата vahe-91:
то во время компиляции пишет unknown identifier 'x' »
там подразумевается что человек сам подставит путь к его запускному файлу x.exe для которого нужны параметры. Возьми в апострофы 'x.exe'.

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 20:02, 06-01-2011 | #397


Пользователь


Сообщения: 129
Благодарности: 9

Профиль | Отправить PM | Цитировать


R.i.m.s.k.y.,
спасибо, ты очень добр

Отправлено: 20:15, 06-01-2011 | #398


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте, уважаемые форумчане! Подскажите, как можно организовать постоянное сканирование реестра и файлов, а не только в момент запуска инсталлятора? Для чего:
Код: Выделить весь код
  if RegValueExists({#ValueExists}) then
  if RegQueryStringValue({#ValueExists}, GamePath) then
  if FileExists({#FileExists}) then GameAlreadyInstall:=True else GameAlreadyInstall:=False;
нужно, что бы после удаления ветки реестра или файла менялось значение GameAlreadyInstall в режиме реального времени.


С помощью операторов while и do пробовал зациклить, но не могу условия сообразить.
А для чего? Делаю авторан на Inno, если нет записи в реестре - установить игру, авторан сворачивается, после установки игры (и соответственно появления записи в реестре) авторан разворачивается и - запустить игру. В AutoPlay Media Studio всё это реализуется довольно просто, но мне надо в Inno .

Отправлено: 21:03, 06-01-2011 | #399


Пользователь


Сообщения: 129
Благодарности: 9

Профиль | Отправить PM | Цитировать


R.i.m.s.k.y.,
для примера скомпилировал это, ничего не получилось. Установщик даже не запускается. Что не правильно ?

Код: Выделить весь код
[Setup]
AppId={{5B88473B-FA3C-4A80-8D78-C8960C9C3377}
AppName=X  
AppVersion=1.0.0
AppPublisher=Ya
CreateAppDir=no 
OutputBaseFilename=setup
Compression=none 

[Files]
Source: "C:\Documents and Settings\Administrator\Desktop\x.exe"; 
DestDir: "{tmp}"; Flags: ignoreversion 

[_Code] 
var paramZ:boolean; 
function InitializeSetup(): Boolean;
var i:integer; x,s, st:string;
begin    for i:=2 to ParamCount do 
begin st:=Lowercase(ParamStr(i)); 
StringChangeEx(st, '/', '', True); 
StringChangeEx(st, '\', '', True); StringChangeEx(st, '-', '', True); 
case st of  Lowercase('z') : paramZ := true; 
end;  
end;  
end;
procedure CurStepChanged(CurStep: TSetupStep);  
var res : integer;  
begin    if (CurStep=ssDone) and (paramZ) then 
Exec('{tmp}\x.exe', ' /z ' ,ExpandConstant('{...}'),SW_HIDE,ewWaitUntilTerminated,res);  
end; end.

Последний раз редактировалось vahe-91, 06-01-2011 в 22:03.


Отправлено: 21:44, 06-01-2011 | #400



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход