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

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

 

Аватара для Deen

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


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

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


Подскажите где можно подглядеть как писать скрипт на распаковку архивов *.7z через секцию [RUN]. И какие для этова нужны дополнительные файлы и dll?

Отправлено: 17:53, 13-03-2010 | #1531



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

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


Ветеран


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

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


Цитата МИШАНЧИК:
но почему-то у меня если выставить его девятизначным(чтоб было 1 Гб и больше) скрипт при компиляции выдаёт ошибку в этой строке »
Использую расширенную версию от Restools+дополнения, попробовал с UninstallDisplaySize=1073741824, что составляет 1Гб, компиляция прошла нормально, т.е. никаких ошибок, а вот при UninstallDisplaySize=2147483648, что составляет 2Гб, выскачила ошибка, хотя в справке написано:
Цитата из Справки:
Valid values:
1 through 4294967295
т.е. максимальный размер 4Гб, но на практике получается только 1Гб, возможно это глюк, который думаю позже исправят, но в любом случае она действует только на Win7 и выше.
Цитата МИШАНЧИК:
а размер установленной программы всё-равно равен размеру инсталятора без архивов »
Я объясню, как проверял, т.е. произвожу установку полностью пустого скрипта, захожу в апплет "Установка и удаление программ", вижу размер 0,87МБ, закрываю апплет, копирую в эту же папку программы архив размером 43,7МБ, запускаю снова апплет "Установка и удаление программ" и вижу... упс... интересно вчера размер менялся, а сегодня остаётся прежний, видимо апплет читает размер по другому, чем я думал...

Цитата Deen:
где можно подглядеть как писать скрипт на распаковку архивов *.7z »
Скачайте из шапки темы Inno Setup Scripting 5.1, там есть пример.

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


Отправлено: 19:35, 13-03-2010 | #1532


Аватара для semiono

Ветеран


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

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


Срочно!
Никогда не заморачивался над внешним видом, но такое очень хочется повторить!


Подскажите как, я думаю это не сложный код!? Битмэп во всю ширину.

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


Отправлено: 21:08, 13-03-2010 | #1533


Ветеран


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

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


Цитата semiono:
я думаю это не сложный код!? »
Строк так на пятьсот, с учётом, что вы не все страницы будите использовать.
В шапке темы есть ссылка на скрипт Картинка на страницах инсталлятора.

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

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

Отправлено: 22:20, 13-03-2010 | #1534


Аватара для semiono

Ветеран


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

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


О! Спасибо, я не думал что так много! Но раз есть готовое, то не важно сколько строк.
---
Немного поясню, может не совсем правильно понят был. Картинку буквально не надо растягивать,
достаточно только показать готовую широкую картинку по площади окна. И только на StartPage
и на FinishPage. Нижнее поле кнопок не надо покрывать картинкой, это хотелось бы поправить.
Может сам справлюсь, я пока удалил другие страницы, но диалоги тоже какие-то остались
со "скином", пока думаю...

Типичный мой инсталлер -
Welcome! | сразу > Redy to Install | Installing... | Complete! - больше ничего!

Картинка в области кнопок ещё и плохо тем что стили WinXP там обычно плохо прорисовываются.

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


Последний раз редактировалось semiono, 13-03-2010 в 23:20.


Отправлено: 22:56, 13-03-2010 | #1535


Аватара для Deen

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


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

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


Serega, а поточнее можно, я понимаю что это уже наверное обсуждали и где на форуме это есть. Я осилил только 28 стр. и научился делать простейшие репаки без внешних упаковщиков, но иногда выходит размер не тот что надо и я пошол дальше учиться.

Посуветуйте чем проще сжимать, я сам решил что 7зип проще чем фриарк, я извлекал много разных скриптов, но в основном попадаются с ФА, а не с 7зип.

Вот например из скрипта игры AvP от механиков:
Код: Выделить весь код
[Files]
Source: {tmp}\button.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\logo.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\papka.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\ac.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\sr.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\msvcr80.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\packjpg_dll.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\pp.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\zlib1.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
и где тут прописаны архивы, где сама игра, одни темп файлы.

Или вот от игры Dirt 2:
Код: Выделить весь код
[Files]
Source: {tmp}\BitmapHelper.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\InnoCallback.dll; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\Background.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\Buttons.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\Flags.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\FolderImage.bmp; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
Source: {tmp}\arc.exe; DestDir: {tmp}; MinVersion: 4.0,5.0; Flags: deleteafterinstall dontcopy
arc.exe это из корня папки ФА, а что за dll? и опять где сами архивы?

Отправлено: 23:18, 13-03-2010 | #1536


Аватара для semiono

Ветеран


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

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


Есть ещё один вопрос для меня актуальный.
Я давно ещё хотел зделать запуск программы "taskkill.exe", но только самодельной утилиты.
Проблема в том, что даже если зделать запуск из секции [code] перед началом установки,
то остаётся не решённым то что надо заранее иметь утилиту в папке {tmp}
А как её туда скопировать из инсталятора перед установкой? Получается замкнутый круг.

Но я придумал тогда зделать один инсталятор внутри другого. Но может быть есть более
красивый способ?

Системный taskkill.exe не годится, на него надежды мало, так как он может просто не работать
если в системе не установленна WBEM - такое просто запорет установку за зря.

Очень плохо что этап распаковки происходит в один раз без контроля из секции [code]
А может есть способ всётаки?

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


Отправлено: 23:37, 13-03-2010 | #1537


Аватара для semiono

Ветеран


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

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


Мои изобретения -

Кампилируем первый файл: (stubz.exe)
Код: Выделить весь код
[Setup]
AppName=stub
AppVerName=stub 1.1.1.1
AllowUNCPath=yes
DefaultDirName={win}
DirExistsWarning=no
DisableDirPage=yes
DisableFinishedPage=no
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=no
ArchitecturesInstallIn64BitMode=x64
Compression=lzma
SolidCompression=yes
OutputDir=.
OutputBaseFilename=stubz
TouchDate=2001-01-01
TouchTime=00:00
MinVersion=4.1,4.0
VersionInfoCompany=Semiono
VersionInfoCopyright=2001-2005 GmbH
VersionInfoDescription=stub
VersionInfoTextVersion=1.1.1.1
VersionInfoVersion=1.1.1.1
Uninstallable=no
UsePreviousAppDir=no

[Kode]  // < защита от html тэга
procedure InitializeWizard();
begin
  try
  DelTree(ExpandConstant('{sd}\Test\*'), False, True, True);
  except
  Beep; Exit;
  end;
end;

[Files]
Source: "pkill.exe"; DestDir: "{sd}\Test"; Flags: touch; Permissions: admins-full
Кампилируем второй файл: (stub.exe)
Код: Выделить весь код
[Setup]
AppName=stub
AppVerName=stub 1.1.1.1
AllowUNCPath=yes
DefaultDirName={win}
DirExistsWarning=no
DisableDirPage=yes
DisableFinishedPage=no
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=no
ArchitecturesInstallIn64BitMode=x64
Compression=lzma
SolidCompression=yes
OutputDir=.
OutputBaseFilename=stub
TouchDate=2001-01-01
TouchTime=00:00
MinVersion=4.1,4.0
VersionInfoCompany=Semiono
VersionInfoCopyright=2001-2005 GmbH
VersionInfoDescription=stub
VersionInfoTextVersion=1.1.1.1
VersionInfoVersion=1.1.1.1
Uninstallable=no
UsePreviousAppDir=no

[Kode]
procedure InitializeWizard();

var
  ErrorCode: Integer;
  begin
    FileCopy(ExpandConstant('{sys}\calc.exe'), ExpandConstant('{sd}\Test\calc.exe'), true);
      ShellExec('', ExpandConstant('{sd}\Test\calc.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
      ShellExec('', ExpandConstant('{sd}\Test\calc.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
      ShellExec('', ExpandConstant('{sd}\Test\calc.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode);
end;

[Run]
Filename: "{tmp}\pkill.exe"; Parameters: "calc.exe"; Flags: runhidden
Filename: "{tmp}\stubz.exe"; Parameters: "/verysilent"; Flags: waituntilterminated

[Files]
Source: "pkill.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall touch; Permissions: admins-full
Source: "stubz.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall touch; Permissions: admins-full
На словах здесь копируется калькулятор в директорию {app} и запускается три раза,
чтобы не было возможно удалить директорию. После чего запускается pkill.exe
который закрывает калькуляторы и затем чистится целевая директория, и для теста
туда копируется pkill.exe

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


Последний раз редактировалось semiono, 14-03-2010 в 06:19.


Отправлено: 04:54, 14-03-2010 | #1538


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


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

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


Мне недавно понадобилось найти в файле нужный параметр и дописать к нему своё значение. Функция замены строки в файле в "чистом" виде не подошла. Пришлось слегка доработать его. Собственно сам скрипт:
Код: Выделить весь код
Procedure StrInsert ();
var
  S: TArrayOfString;
  F: String;
  i:integer;
begin
  F := ExpandConstant('{app}')+'\file.txt';
  if not FileExists(F) then Exit;
  LoadStringsFromFile(F, S);
  for i:=0 to GetArrayLength(S)-1 do begin
    if Pos('param',S[i])>0 then
      begin
        if Pos('=', S[i])>0 then Insert('insParam ', S[i], Pos('=', S[i])+2) else Exit;
      end;
  end;
  SaveStringsToFile(F, S, False);
end;
В этом примере скрипт ищет в файле file.txt строку содержащую param, потом в полученной строке ищет знак равенства = Если такой знак имеется, то через один символ дописывает insParam.
Результат работы: было "bla bla param = bla bla" стало "bla bla param = insParam bla bla"
Может кому нибудь пригодится
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:00, 14-03-2010 | #1539


Аватара для semiono

Ветеран


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

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


Неожиданно с кодом загрузки большой картинки увидел следущее:
begin
ExtractTemporaryFile('img.bmp');

Значит все мои шаманства с двумя инсталлерами бред!
Я не знал что из кода можно распаковать!


Правильно ли так будет или можно оптимизировать?
Код: Выделить весь код
procedure InitializeWizard();
begin   
ExtractTemporaryFile('pkill.exe'); 
ShellExec('', ExpandConstant('{tmp}\pkill.exe'),'calc.exe', '', 
SW_SHOW, ewNoWait, ErrorCode); 
end;
И чем отличается Exec() от ShellExec(), первый я так и не смог использовать
из-за безчисленных BEGIN IF THEN в примере.

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


Отправлено: 22:51, 14-03-2010 | #1540



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




 
Переход