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

Компьютерный форум 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

 

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


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

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


Цитата S.E.K.T.O.R.:
хотите сказать, что за это отвечают данные по адресу
HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions\ProductSuite
т.е. если ProductSuite - Personal значит это Home, если значения нет Professional »
Не совсем так (были в сети не так давно статьи, как из Хомяка сделать Профессионал)
Но, тем не менее, примерно так.

Отправлено: 18:09, 07-11-2009 | #381



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

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


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


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

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


Скажите как сделать чтобы после установки выдавалось сообщение?

Отправлено: 20:53, 08-11-2009 | #382


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


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

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


Цитата Lancer2404:
Скажите как сделать чтобы после установки выдавалось сообщение? »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=False
Uninstallable=False
OutputDir=userdocs:My Program.

[code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
    MsgBox('Сообщение', mbInformation, MB_OK);
end;

Отправлено: 21:59, 08-11-2009 | #383


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


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

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


спасибо

Отправлено: 18:37, 09-11-2009 | #384


Аватара для Habetdin


Автор проектов


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

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


Проблема решена
читать дальше »
Решение:
Код: Выделить весь код
[code]
procedure CurPageChanged(CurPageID: Integer);
begin
	if CurPageID = wpInstalling then
		begin
		if FileExists(ExpandConstant('{src}\File.ext')) then
		FileCopy(ExpandConstant('{src}\File.ext'), ExpandConstant('{app}\File.ext'), False);
	end;
end;

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Последний раз редактировалось Habetdin, 10-11-2009 в 20:40. Причина: [решено]

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

Отправлено: 13:34, 10-11-2009 | #385


Ветеран


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

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


Habetdin, дело в том, что есть только:
Код: Выделить весь код
function FileCopy(const ExistingFile, NewFile: string; const FailIfExists: Boolean): Boolean;
Цитата из Справки:
Копирует ExistingFile в NewFile, сохраняя временные отметки и атрибуты файла.
Если FailIfExists=True и NewFile уже существует, файл не копируется, если FailIfExists=False, существующий файл заменится на NewFile.
Если копирование успешно, возвращает True, иначе False.

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

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

Отправлено: 18:36, 10-11-2009 | #386


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


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

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


у меня трабла , при выборе всех компонентов ставятся все ярлыки, а мне нужно чтобы при выборе компонентов main и browser ставился только ярлык Name: "{userdesktop}\Quake Live", а ставятся оба Name: "{userdesktop}\Quake Live" и Name: "{userdesktop}\QuakeLive.com"
Как нужно выставить компоненты чтобы такого небыло или что нужно сделать?

Код: Выделить весь код
[Types]
Name: "full"; Description: "Все компоненты";
Name: "custom"; Description: "Выбрать компоненты"; Flags: iscustom

[Components]
Name: "main"; Description: "Главные файлы Quake Live"; Types: full custom; Flags: fixed
Name: "browser"; Description: "Firefox и дополнение Prism"; Types: full custom
Name: "manual"; Description: "Руководство и Награды"; Types: full custom
Name: "anti"; Description: "Античит PunkBuster"; Types: full custom

[Messages]
BeveledLabel=Copyright © Mio Dark Project

[Tasks]
Name: "desktopicon"; Description: "Создать ярлык на Рабочем Столе"; GroupDescription: "{cm:AdditionalIcons}"

[Files]
Source: "uninstall.ico"; Components: main; DestDir: "{userappdata}\id Software\uninstall"; Flags: ignoreversion
Source: "usercur\*"; Components: main; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "usercur2\*"; Components: manual; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "usercur3\*"; Components: browser; DestDir: "{userappdata}\"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "programfiles\*"; Components: browser; DestDir: "{pf}\"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "pk3\*"; Components: main; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension nocompression
Source: "pbsvc.exe" ;Components: anti;DestDir: "{tmp}"; Flags: ignoreversion

[Icons]
Name: "{group}\QuakeLive.com"; Filename: "http://www.quakelive.com"; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: main
Name: "{group}\Руководство к игре"; Filename: "{userappdata}\id Software\quakelive\home\manual\manual.htm"; IconFilename: "{userappdata}\id Software\quakelive\home\links\qlm.ico"
Name: "{group}\Демки"; Filename: "{userappdata}\id Software\quakelive\home\baseq3\demos"; IconFilename: "{sys}\SHELL32.dll";  IconIndex: 126
Name: "{group}\Скриншоты"; Filename: "{userappdata}\id Software\quakelive\home\baseq3\screenshots"; IconFilename: "{sys}\SHELL32.dll";  IconIndex: 127
Name: "{group}\Удалить игру"; Filename: "{uninstallexe}"; IconFilename: "{userappdata}\id Software\uninstall\uninstall.ico"
Name: "{userdesktop}\QuakeLive.com"; Filename: "http://www.quakelive.com"; Tasks: desktopicon; IconFilename: "{userappdata}\id Software\quakelive\home\baseq3\quakelive.dll"; IconIndex: 0; Components: main
Name: "{userdesktop}\Quake Live"; Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe"; IconIndex: 0; Components: browser
Name: "{userdesktop}\Руководство к игре"; Filename: "{userappdata}\id Software\quakelive\home\manual\manual.htm"; IconFilename: "{userappdata}\id Software\quakelive\home\links\qlm.ico"

[Run]
Filename: {tmp}\pbsvc.exe; StatusMsg: "Установка античита PunkBuster..."; Parameters: "/i --no-display --i-accept-the-pb-eula /u"; WorkingDir: {tmp}; Flags: runhidden waituntilterminated ; Components: anti;
Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Description: "Войти в игру"; Flags: nowait shellexec postinstall skipifsilent unchecked; Components: browser
Filename: "http://www.quakelive.com/#home"; Description: "Войти в игру"; Flags: nowait shellexec postinstall skipifsilent unchecked; Components: main
Filename: {userappdata}\id Software\quakelive\home\manual\manual.htm; Description: "Прочитать руководство"; Flags: nowait shellexec postinstall skipifsilent unchecked; Components: manual

Отправлено: 11:56, 11-11-2009 | #387


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


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

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


Скрипты добавляющие/удаляющие ваш путь в переменной %PATH%:
читать дальше »
Код: Выделить весь код
///////////////////////////////////////////////////////////////////////////////////////////////////
// Сохранить сей манускрипт как "env-tools.iss" (без кавычек)
//
//  По мотивам сообщения тов. omals и zhe_zho от 02-12-2008 09:21
//  http://forum.ru-board.com/topic.cgi/tools.cgi?action=notifyon&forum=5&topic=27438&start=1685
//
//  Для применения нового значения %PATH% после завершения инсталяции
//  необходимо добавить в секцию:
//
//  [Setup]
//  ChangesEnvironment=yes
//
//  В скрипт подключается так:
//
//  [_Code]                           "_Code" - Из-за ограничений тегов форума. Имеется ввиду секция Code
//  #include "env-tools.iss"
//
//  Процедуры описаны в env-tools.iss:
//
//  SetEnvironmentPath('<ваш_путь>');    // Добавляет <ваш_путь> к системному %PATH% 
//  DeleteEnvironmentPath('<ваш_путь>'); // Удаляет <ваш_путь> из системного %PATH%
//
//  Вызывать по смыслу в нужном месте инсталляции или деинсталяции 
//  Например:
//  {После инсталляции:}
//  procedure CurStepChanged(CurStep: TSetupStep);
//  begin
//    if CurStep = ssPostInstall then
//    begin
//      SetEnvironmentPath(ExpandConstant('{app}\bin'));
//    end;
//  end;
// 
//  {Перед деинсталляцией:}
//  procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
//  begin
//    if CurUninstallStep = usUninstall then
//    begin
//      DeleteEnvironmentPath(ExpandConstant('{app}\bin'));
//    end;
//  end;
//        
///////////////////////////////////////////////////////////////////////////////////////////////////

procedure SetEnvironmentPath(NewPath: String);
var
  PathStr: String;
begin
  {Получаем значение текущего системного %PATH%}
  RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
  {Ищем NewPath в текущем системном %PATH%}
  if Pos(NewPath, PathStr) <= 0 then // Если в текущем %PATH% не найдено NewPath;
  begin
    PathStr := NewPath + ';' + PathStr;
    RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
  end;
end;

procedure DeleteEnvironmentPath(OldPath: String);
var
  PathStr: String;
  StartPos, Len: Integer;
begin
  {Получаем значение текущего системного %PATH%}
  RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);

  {Ищем OldPath c ";" в текущем системном %PATH%}
  StartPos := Pos(OldPath + ';', PathStr); //индекс начала вхождения OldPath c ";"
  if StartPos > 0 then // Если в текущем %PATH% найден OldPath;
  begin
    Len := Length(OldPath + ';');   //длина строки OldPath c ";"
    Delete(PathStr, StartPos, Len); // удаляем из текущего системного %PATH% (PathStr) строку OldPath c ";"
    {Записываем изменения в реестр}
    RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
    Exit;
  end;

  {Ищем OldPath без ";" в текущем системном %PATH%}
  StartPos := Pos(OldPath, PathStr);
  if StartPos > 0 then // Если в текущем %PATH% найден OldPath без ";"
  begin
    Len := Length(OldPath); //индекс начала вхождения OldPath без ";"
    Delete(PathStr, StartPos, Len); // удаляем из текущего системного %PATH% (PathStr) строку OldPath без ";"
    {Записываем изменения в реестр}
    RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', PathStr);
  end;
end;

Может кому пригодится...

Внимание, здесь нет проверки входного параметра функций на "пустую строку" - осторожней с этим... (Доделаю при удобном случае)

ЗЫ: Как принудительно заставить систему обновить(перечитать) измененный %PATH%, ДО ЗАВЕРШЕНИЯ установки?
Дело в том, что ChangesEnvironment=yes срабатывает уже ПОСЛЕ ЗАВЕРШЕНИЯ установки.
А то у меня в постинстале батник не работает т.к. использует уже "новую" %PATH%...

Последний раз редактировалось ADremLIN, 23-11-2009 в 16:34. Причина: Добавлен пример использования

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

Отправлено: 13:12, 11-11-2009 | #388

abc abc вне форума

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


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

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


Подскажите, как сделать в программе установки проверку на наличие установленного распространяемого пакета ms visual c++ 2008 и в случае отсутствия автоматически (с учётом разрядности системы) загрузить (в ISTool есть модуль закачи файлов) и выполнить файл инсталлятора пакета. Заранее благодарен. Прошу прощение, если это уже где-то обсуждалось.

Отправлено: 17:54, 11-11-2009 | #389


Ветеран


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

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


Цитата lmiol:
у меня трабла , при выборе всех компонентов ставятся все ярлыки »
Добавьте проверку на выбранный компонент:
Код: Выделить весь код
Name: "{userdesktop}\Quake Live"; Filename: {pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe; WorkingDir: {pf}\FirefoxPrismQuakeLive\Profiles\Clear\extensions\refractor@developer.mozilla.org\prism; Tasks: desktopicon; IconFilename: "{pf}\FirefoxPrismQuakeLive\Firefox\Quake Live.exe"; IconIndex: 0; Components: browser; Check: not IsComponentSelected('main')
Цитата ADremLIN:
Дело в том, что ChangesEnvironment=yes срабатывает уже ПОСЛЕ ЗАВЕРШЕНИЯ установки. »
Цитата из Справки
Цитата:
Порядок установки

Задания в секциях от начала до завершения установки выполняются в следующем порядке:

·Выполняется [InstallDelete].

·Параметры секции [UninstallDelete] располагаются в логе деинсталлятора (который на этом этапе находится в оперативной памяти).

·При необходимости создается папка приложения.

·Выполняется [Dirs].

·При необходимости резервируется имя файла деинсталлятора.

·Выполняется [Files]. (Регистрация файлов не происходит.)

·Выполняется [Icons].

·Выполняется [INI].

·Выполняется [Registry].

·Регистрируются файлы, нуждающиеся в регистрации, если только не требуется перезагрузка системы - в этом случае ни один файл не будет зарегистрирован до тех пор, пока система не перезапустится. .

·При необходимости создается пункт в Установка/Удаление программ.

·Параметры [UninstallRun] располагаются в логе деинсталлятора.

·Завершается создание деинсталлятора и он сохраняется на диске.

·При ChangesAssociations=yes меняются ассоциации для файлов.

·Если ChangesEnvironment=yes, остальные приложения информируются об изменении переменных среды.

·Выполняется [Run], за исключением файлов с флагом postinstall, которые выполнятся после того, как отобразится страница Установка завершена.

Все параметры выполняются инсталлятором в том порядке, в котором они располагаются в секции

Все изменения отменяются деинсталлятором в порядке, обратном их созданию инсталлятором. Это происходит потому, что лог деинсталлятора выполняется от конца к началу..

если вы запускаете в ssPostInstall батник, то соответственно приложения уже перезагрузились. Видимо что-то не так с батником...

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

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

Отправлено: 19:36, 11-11-2009 | #390



Компьютерный форум 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




 
Переход