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

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

 

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


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

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


Sotonisto, Чуваккккк)))))) Спасибо тебе огромное))))
Очень благодарен))))))))
Только в этот скрипт можно как то вшить распаковку 7z архивов?

Отправлено: 13:35, 07-01-2011 | #411



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

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


Ветеран


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

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


Цитата vahe-91:
чтобы без ключа /z запустилась x.exe без каких либо ключей »
Тогда сделать надо так:
Пример

Код: Выделить весь код
[Files]
Source: C:\Documents and Settings\Administrator\Desktop\x.exe; DestDir: {tmp}; Flags: ignoreversion

[Run]
Filename: {tmp}\x.exe; Parameters: {code:KeyStr}; WorkingDir: {tmp}; Flags: runhidden

[Code]
var
  paramZ: Boolean;

function KeyStr(const s: string): string;
begin
  case paramZ of
    True : Result := '/z';
    False: Result := '';
  end;
end;

function GetKeyParamStr(const key: string): Boolean;
{ функция вернёт True, если ключ key присутствует в командной строке }
var
  i: Integer;
  s, t: string;
begin
  try
    Result := False;
    t := Lowercase(key);
    for i := 2 to ParamCount do
      begin
        s := Lowercase(ParamStr(i));
        if Pos(t, s) > 0 then
          begin
            StringChangeEx(s, '/', '', True);
            StringChangeEx(s, '\', '', True);
            StringChangeEx(s, '-', '', True);
            Result := t = s;
          end;
        if Result then Break;
      end;
  finally
    SetLength(s, 0);
    SetLength(t, 0);
  end;
end;

function InitializeSetup(): Boolean;
begin
  Result := True;
  paramZ := GetKeyParamStr('z');
end;

а про флаги секции [Run] почитайте в Справке

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

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

Отправлено: 13:56, 07-01-2011 | #412


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


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

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


Serega,
Спасибо

Отправлено: 14:08, 07-01-2011 | #413


Аватара для Sotonisto

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


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

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


Цитата Vista-w:
Только в этот скрипт можно как то вшить распаковку 7z архивов? »
Вот тебе cамый простой способ (не забываем [_Сode] изменить на [Сode] ):
читать дальше »
Код: Выделить весь код
[Run]
Filename: {src}\1.exe; WorkingDir: {src}; Parameters: "-y -o""{app}"""; StatusMsg: Установка русификации...; Flags: waituntilterminated

[_Сode]
procedure CurStepChanged(CurStep: TSetupStep);
var
  res:Integer;
  app, arc, dest:string;
begin
If CurStep=ssPostInstall
then
begin
  app:=ExpandConstant('{src}')+'\1.exe';
  dest:=ExpandConstant('{app}');
  Exec(app, 'x "'+ arc + '" -y -o"'+ dest + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);
end;
end;

Или тебе нужен скрипт распаковки с отдельным прогресс-баром?

-------
Большой шаг вперед, как правило, следствие хорошего пинка под зад.


Последний раз редактировалось Sotonisto, 07-01-2011 в 19:13.


Отправлено: 19:05, 07-01-2011 | #414


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Sotonisto, Есть способ еще проще: Пакуется 7z sfx с без параметров (ну, может сайлент-моде=1+ самоудаление после распаковки) и запускается из секции РАН безо всякого паскаля

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


Отправлено: 22:10, 07-01-2011 | #415


Аватара для Sotonisto

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


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

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


Лександер, да это первое что пришло в голову
Хотя 7zip уже не так популярен как раньше Сейчас всем FreeArc подавай

-------
Большой шаг вперед, как правило, следствие хорошего пинка под зад.


Отправлено: 23:26, 07-01-2011 | #416


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


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

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


Sotonisto,
Мне нужен с отдельным прогресс баром, чтоб потом этот архив удалился?
Можно такой?
Буду благодарен.

Отправлено: 12:59, 08-01-2011 | #417


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


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

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


как сделать, чтобы команды в секции [Run] выполнялись после распаковки архива freearc, а не до него

Отправлено: 15:11, 08-01-2011 | #418


Ветеран


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

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


Цитата vahe-91:
как сделать, чтобы команды в секции [Run] выполнялись после распаковки архива freearc »
Переместить запускаемые файлы из секции [Run] в сам код, т.е. добавить их выполнение после распаковки архива.

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


Отправлено: 15:45, 08-01-2011 | #419


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


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

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


Serega,

Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
begin      
if CurStep = ssInstall then begin          
StartInstall:= GetTickCount    {время начала извлечения файлов}
WndHookID:= SetWindowsHookEx(WH_CALLWNDPROC, WrapCWPSTRUCTProc(@OnWndHook, 3), 0, GetCurrentThreadID);    {установка SendMessage хука}          
TimerID:= SetTimer(0, 0, 500 {полсекунды}, WrapTimerProc(@MyTimerProc, 4));    {установка таймера}
if not {#isFalse(SetupSetting("Uninstallable"))} then Status.count:= -1; // не считать файл unins000.exe      end;      
if CurStep = ssPostInstall then      
begin 
StartInstall:= GetTickCount    {время начала распаковки}
UnPackError:= UnPack('{#Archives}')
if UnPackError <> 0 then begin // Error occured, uninstall it then 
 if not {#isFalse(SetupSetting("Uninstallable"))} then  // деинсталляция разрешёна
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);    // откат установки из-за ошибки unarc.dll 
WizardForm.caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')
SetTaskBarTitle(SetupMessage(msgErrorTitle))          end else
SetTaskBarTitle(SetupMessage(msgSetupAppTitle));

if CurStep=ssDone then Exec('{tmp}\setup.exe', sw_Hide, ewWaitUntilTerminated)   //это я добавил

  end;  end;
в конце того что я добавил пишет invalid number of parameters

Отправлено: 16:26, 08-01-2011 | #420



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




 
Переход