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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


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

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

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • 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.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

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


Отправлено: 22:06, 23-08-2009

 

Новый участник


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

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


semiono, на все вопросы
сначала читаем хэлп, потом пишем код
есть еще вариант, к сожалению наиболее часто используемый, тупо копируем чужой код и не вникаем

ЗЫ в хэлпе есть ответы процентов на 60 вопросов. на твой
Цитата semiono:
И чем отличается Exec() от ShellExec() »
в том числе. с примерами использования
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:14, 14-03-2010 | #1541



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

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


Аватара для semiono

Ветеран


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

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


Из хелпа

Код: Выделить весь код
Example:
var
  ResultCode: Integer;
begin
  // Launch Notepad and wait for it to terminate
  if Exec(ExpandConstant('{win}\notepad.exe'), '', '', SW_SHOW,
     ewWaitUntilTerminated, ResultCode) then
  begin
    // handle success if necessary; ResultCode contains the exit code
  end
  else begin
    // handle failure if necessary; ResultCode contains the error code
  end;
end;
begin
// мне было бы понятнее и достаточным так -
Exec(ExpandConstant('{win}\notepad.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
// и всё!!! Но бывает что это тоже не работает, а я паскаль не знаю к сожалению.
end;

А такое меня обычно вообще в ступор приводит
function ShellExec(const Verb, Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ErrorCode: Integer): Boolean;
Если взять современный ассемблер, то все эти безумные типы на паскаль приводяться лишь к dd dw db ;- а классов вообще нет ))))

Ответ знаю, надо учиться!

-------
Полезное сообщение


Отправлено: 23:45, 14-03-2010 | #1542


Аватара для YURSHAT

Старожил


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

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


Цитата semiono:
И чем отличается Exec() от ShellExec(), первый я так и не смог использовать »
Exec - запускает исполняемый файл

ShellExec используется для запуска не исполняемого файла (не .exe и не .bat файла) (например открыть файл readMe.txt)

function Exec (const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean;

Описание:

Выполняет указанные исполняемые файлы. Параметр Wait указывает, возвратить значение функции немедленно или подождать, пока запущенный процесс завершится или освободится. Возвращает True если выполнение файла прошло успешно, иначе False. Если возвращено True и Wait=ewWaitUntilTerminated, то ResultCode возвращает код выхода для процесса. Если возвращено False, ResultCode выдает ошибку. Используй SysErrorMessage(ResultCode) для получения описания ошики.

function ShellExec (const Verb, Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ErrorCode: Integer): Boolean;

Описание:

Открывает указанный файл или выполняет другое действие, указанное в Verb. В Filename может быть указан документ или папка. Параметр Wait указывает, возвратить значение функции немедленно или подождать, пока запущенный процесс завершится или освободится. Возвращает True, если файл открыт успешно, иначе False. Если возвращено False, ErrorCode выдаст ошибку. Используй SysErrorMessage(ErrorCode) для получения описания ошики.

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов

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

Отправлено: 23:49, 14-03-2010 | #1543


Аватара для semiono

Ветеран


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

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


Я пожалуй всё написал! Наверное без логических ошибок.

Код: Выделить весь код
[Kode]
procedure InitializeWizard();
begin
  try DeleteFile(ExpandConstant('{sd}\dopuslib.tmp'))
  except Exit; end;
end;

procedure CurPageChanged(CurPageID: Integer);
var
ResultCode: Integer;
begin
  ExtractTemporaryFile('pkill.exe');
  if CurPageID = wpReady then
  begin
  Exec(ExpandConstant('{tmp}\pkill.exe'), 'dopus.exe', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
  Exec(ExpandConstant('{tmp}\pkill.exe'), 'dopusrt.exe', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

      if FileExists(ExpandConstant('{reg:HKLM32\Software\VST,Proton.bin|{pf}}\DOpus\dopuslib.dll')) then
      try
      RenameFile(ExpandConstant('{reg:HKLM32\Software\VST,Proton.bin|{pf}}\DOpus\dopuslib.dll'), ExpandConstant('{sd}\dopuslib.tmp'))
      except Exit; end;

          try
          DelTree(ExpandConstant('{reg:HKLM32\Software\VST,Proton.bin|{pf}}\DOpus'), False, True, True);
          except
          Beep; Beep; Exit; end; end;
end;

procedure DeinitializeSetup();
...
Хотя я бы хотел ещё циклы подключить, вообще не знаю как это зделать.
Например, чтобы троекратно запустить
Exec(ExpandConstant('{tmp}\pkill.exe'), 'dopus.exe', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
но при этом не писать три раза эту строку.

Или например вызвать эту строку после такого кода -
RenameFile(ExpandConstant('{reg:HKLM32\Software\VST,Proton.bin|{pf}}\DOpus\dopuslib.dll'), ExpandConstant('{sd}\dopuslib.tmp'))
except

Для усиления работы. Или задержки при выполнении практически невозможны? Я имею ввиду, что если
файл должен быть переименован, то это выполниться безкомпрописно?

Я даже на autoit подстраховывался, хотя так никто не делает, но для скриптов это возможно оправдано -
WinWait()
WinWait()
WinWait()
Send()
?

Ещё по существу, можно ли отпралять файл в корзину?
RenameFile(ExpandConstant('{pf}\DOpus\dopuslib.dll'), ExpandConstant('{sd}\Recycled\dopuslib.tmp'))

Или это заглючит? Причём тут лучше бы переменная была {Recycled} иначе для NTFS не валидно!

-------
Полезное сообщение


Последний раз редактировалось semiono, 15-03-2010 в 04:42.


Отправлено: 04:32, 15-03-2010 | #1544


Новый участник


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

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


здравствуйте у меня такая проблема "#ifdef UNICODE ; если у вас ошибка на этой строке, то установите препроцессор или исправьте скрипт для вашей версии Inno Setup " вообще незнаю что уже делать,и другие версии Inno Setup ставил,это скрипт для разархивирования FreeArc,помогите пожалуйста(((

Отправлено: 10:19, 15-03-2010 | #1545


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


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

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


вот код на цвет изменения цвета инстала:
Код: Выделить весь код
[code_]
procedure InitializeWizard();
begin
WizardForm.Font.Color:=Clgreen;
WizardForm.WelcomeLabel1.Font.Color:=ClRed;
WizardForm.FinishedHeadingLabel.Font.Color:=ClRed;
WizardForm.PageNameLabel.Font.Color:=ClRed;
end;
но "Доступно места на диске" не меняется:

может стоит еще что-нибудь дописать, чтобы цвет изменился?

Отправлено: 16:00, 15-03-2010 | #1546


Аватара для YURSHAT

Старожил


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

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


Цитата alex2010:
вот код на цвет изменения цвета инстала: »
Ну так этот код для стандартных элементов инсталла, а у вас создан кастомный.

Измените цвет текста этого лейбла и все (FreeSpaceLabel:= TLabel.Create(WizardForm))

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов


Отправлено: 17:32, 15-03-2010 | #1547


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


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

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


YURSHAT, спасибо. только я все равно не понял где это прописывать , но просмотрел код "подсчет свободного места на ЖД"
и увидел там:
Код: Выделить весь код
begin
  SelectDirText_1.Font.Color:= ClBlack;
. изменил black на green и все стало как надо

Отправлено: 19:03, 15-03-2010 | #1548


Аватара для semiono

Ветеран


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

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


Цитата solvador:
Мне недавно понадобилось найти в файле нужный параметр и дописать к нему своё значение. »
Спасибо! Как можно этот код использовать вызывая его многократно!!?
Например, грубо говоря я читаю реестр
$1 = RegRead(HKLM\Software\Classes\exefile\DefaultIcon)
$2 = RegRead(HKLM\Software\Classes\dllfile\DefaultIcon)
$3 = RegRead(HKLM\Software\Classes\sysfile\DefaultIcon)
(пишу наугад, на синтаксис не обращайте внимание)
Как мне эти переменные $(1,2,3) поочерёдно вписывать в файл с заменой,
найти A и заменить на $1, найти B и заменить на $2...
То-есть условие поиска должно изменятся разумеется...
Но ведь весь код поиска для этого глупо переписывать, особенно если переменных штук десять и более.
??? Очень хотелось бы такой код поглядеть! Это было бы ещё полезнее для пользования.
И пожалуйста полный пример напишите вместе с RegRead() кодом корректно?
Процедура может быть DeInitializate Install ~ в конце кароче установки...
?!

-------
Полезное сообщение


Отправлено: 19:59, 15-03-2010 | #1549


Новый участник


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

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


Изображения
Тип файла: jpg Untitled.jpg
(38.1 Kb, 65 просмотров)

Здравствуй народ.

Кто знает, где найти такую тему (см. вложение)?

Отправлено: 23:46, 15-03-2010 | #1550



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход