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

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

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

Аватара для El Sanchez

Ветеран


Contributor


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


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

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

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


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


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Аватара для valyok666

Старожил


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

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


VASYAKRN,
Цитата:
извините за мой русский

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"

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

Отправлено: 20:22, 05-11-2011 | #71



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

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


Забанен


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

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


valyok666, Спасиба

Отправлено: 21:08, 05-11-2011 | #72


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


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

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


Цитата Damaks:
Инсталлятор может после установки сам себя скопировать? »
Цитата:
FileCopy(ExpandConstant('{srcexe}'), 'C:\Test\test.exe', False);
Придумал такой способ

Код: Выделить весь код
#define AppName "My Program";

[Setup]
AppName={#AppName}
AppVerName={#AppName}
DefaultDirName={pf}\{#AppName}
DefaultGroupName={#AppName}
AllowNoIcons=True
OutputDir=userdocs:InnoSetupTest.

[code]
procedure MyFileCopy();
var
  s1, s2: string;
  ResultCode: Integer;
begin
  s1:= ExpandConstant('{sd}\MyFileCopy.cmd');
  s2 := 'copy ' + AddQuotes(ExpandConstant('{srcexe}'))
        + ' ' + AddQuotes(AddBackSlash(ExpandConstant('{sd}')) + 'Test\test.exe') + #10#13 +
        + 'del ' + s1;
  SaveStringToFile(s1, s2, False);

  if not DirExists(ExpandConstant('{sd}\Test')) then
    CreateDir(ExpandConstant('{sd}\Test'));
  Exec(s1, '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
    MyFileCopy();
end;

З.Ы.С кириллицей в пути не сработает.

Последний раз редактировалось serg aka lain, 06-11-2011 в 15:33. Причина: немного доработал

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

Отправлено: 05:48, 06-11-2011 | #73


Аватара для Sotonisto

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


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

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


1. Как осуществить разбивку .arc архива на диски (игра, сжатая FreeArc'ом весит ~9.5Gb)?
Хотелось бы разместить, например, 2 архива на 2 DVD и чтобы после окончания распаковки 1 архива, выводилось сообщение "Вставьте диск 2" и т.п.
Нашел такой пример, но не особо понял что делать (у меня требует 2й диск даже не начав установку).
Код: Выделить весь код
if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc'               ) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'),  ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'),  ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc'               ) then break;
2. Для чего нужен файл records.inf (он у меня создается после установки)? Из-за него я не могу установить игру (если файлы инсталла находятся в образе).
После окончания распаковки афхива инсталл просто закрывается (нет ни финишной страницы, ни инсталляции доп. по)

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


Отправлено: 20:12, 06-11-2011 | #74


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата serg aka lain:
З.Ы.С кириллицей в пути не сработает. »
Продолжим тему Вот так, работает и с кирилицей:

читать дальше »
Код: Выделить весь код
#define AppName "My Program";

[Setup]
AppName={#AppName}
AppVerName={#AppName}
DefaultDirName={pf}\{#AppName}
DefaultGroupName={#AppName}
AllowNoIcons=True
OutputDir=userdocs:InnoSetupTest.

[*code]
#ifdef UNICODE
   #define A "W"
 #else
   #define A "A"
 #endif

function CopyFile(ExistingFile,NewFile: PAnsiChar;bFailIfExists: Boolean): Boolean;
external 'CopyFile{#A}@Kernel32.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
begin
   if CurStep = ssPostInstall then
   CreateDir(ExpandConstant('{sd}\тест'));\\ папку нужно создать зарание. 
   CopyFile(ExpandConstant('{srcexe}'),ExpandConstant('{sd}\тест\test.exe'),True);
end;

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

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

Отправлено: 20:25, 06-11-2011 | #75


Аватара для Rikill

Старожил


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

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


Alim13,

Sotonisto, для чего нужен records.inf посмотри в справке к ISDone.

Код: Выделить весь код
 if not ISArcExtract ( 0, 0, ExpandConstant('{src}\1 архив.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    if not ISArcExtract ( 0, 0, ExpandConstant('{src}\2 архив.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'3 архив на 2 диске.arc') then break;
    if not ISArcExtract ( 0, 0, ExpandConstant('{src}\4 на диске.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    if not ISArcExtract ( 0, 0, ExpandConstant('{src}\5 на диске.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
Ну или эксперементируй .

-------
"Око за око приведёт к слепоте мира"- Ганди


Последний раз редактировалось Rikill, 06-11-2011 в 21:13.

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

Отправлено: 21:05, 06-11-2011 | #76


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


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

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


Цитата Лександер:
Продолжим тему Вот так, работает и с кирилицей »
Ценная таки мысль, только в твоём примере будет работать только в ANSI, в Unicode не сработает, так как функция CopyFile
в юникоде выглядит так:
Код: Выделить весь код
function CopyFile(ExistingFile,NewFile: String; bFailIfExists: Boolean): Boolean;
  external 'CopyFileW@Kernel32.dll stdcall';
универсальный пример
Код: Выделить весь код
#ifdef UNICODE
  #define PChar = "String"
  #define A = "W"
#else
  #define PChar = "PChar"
  #define A = "A"
#endif

function CopyFile(ExistingFile,NewFile: {#PChar}; bFailIfExists: Boolean): Boolean;
  external 'CopyFile{#A}@Kernel32.dll stdcall';
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:27, 06-11-2011 | #77


Аватара для Gnom_aka_Lexander

Ветеран


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

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


serg aka lain, Внимательней посмотри мой пример.
читать дальше »
Цитата Лександер:
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
»
Цитата Лександер:
external 'CopyFile{#A}@Kernel32.dll stdcall'; »
Про то, что инно не перенаправляет это дело автоматом, уже научен неприятным опытом

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


Последний раз редактировалось Gnom_aka_Lexander, 07-11-2011 в 10:36.

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

Отправлено: 22:32, 06-11-2011 | #78


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


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

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


Цитата Лександер:
Внимательней посмотри мой пример »
Я имел в виду этот момент
Код: Выделить весь код
function CopyFile(ExistingFile,NewFile: String; bFailIfExists: Boolean): Boolean;
  external 'CopyFileW@Kernel32.dll stdcall';
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:43, 06-11-2011 | #79


Аватара для Sotonisto

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


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

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


Rikill, спасибо Немного изменил твой пример и все получилось ^^
Но появилась другая проблема: прогресс-бар доходит до конца еще во время распаковки 1-го архива + у меня прогресс показан %, так вот, после распаковки 3х архивов отображается 300%
Как это исправить? Вот скрипт инсталла.

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


Отправлено: 00:05, 07-11-2011 | #80



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход