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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

Аватара для R.i.m.s.k.y.

Ветеран


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

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


в шапке и на форуме иногда встречаются скрипты как получить список файлов и каталогов в указанной папке

неправильно, хотя иногда работает
Код: Выделить весь код
...if (FindRec.Attributes = FILE_ATTRIBUTE_DIRECTORY) and (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin...
...if (FindRec.Attributes <> FILE_ATTRIBUTE_DIRECTORY) and (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin...
правильно
Код: Выделить весь код
...if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0) and (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin...
...if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin...

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

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

Отправлено: 13:39, 04-01-2012 | #561



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

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


Аватара для Raf-9600

Старожил


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

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


Ктонить может подкрутить скрипт, чтоб та часть что касается возврата оригинальных файлов, запускалась только если выбран компонент "Game\Lokal\Backup", а та часть что отвечает за проверку на оставшыеся файлы, если выбран "Game\Full"?

читать дальше »
Код: Выделить весь код
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  Res: Integer;
  
//Возврат оригинальных файлов
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Backup\'));
end;


//Проверка на оставшыеся файлы
begin
 case CurUninstallStep of
 usPostUninstall:
  begin
   if DirExists(ExpandConstant('{app}')) then
   if ExpandConstant('{language}') = 'ua' then
   case MsgBox('Папка "' + ExpandConstant('{app}') + '" не порожня.'#13#13 +
               '"Так" – повне видалення всіх файлів у папці, включаючи саму папку.' #13#13 +
               '"Ні" – відкрити папку в провіднику, щоб вручну видалити файли.'#13#13 +
               '"Скасувати" – нічого не робити, видалити папку пізніше самостійно.', mbInformation, MB_YESNOCANCEL) of

        IDYES:
         if not DelTree(ExpandConstant('{app}'), True, True, True) then
                MsgBox('Папка не видалена.' #13#13 'Папка або один з файлів у ній задіяні іншою програмою.', mbError, MB_OK);

        IDNO:
         if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
                MsgBox('Помилка відкриття.' #13#13 'Папка не знайдена.', mbError, MB_OK);

        IDCANCEL:;
   end
   else
   if ExpandConstant('{language}') = 'ru' then
   case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
               '"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
               '"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
               '"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of

        IDYES:
         if not DelTree(ExpandConstant('{app}'), True, True, True) then
                MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);

        IDNO:
         if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
                MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);

        IDCANCEL:;
   end
   else
    case MsgBox('Directory "' + ExpandConstant('{app}') + '" is not empty.'#13#13 +
               '"Yes" to delete all of the files in the directory, including the directory itself.' #13#13 +
               '"No" to open the directory with explorer to delete the files manually.'#13#13 +
               '"Cancel" to do nothing and delete the directory later manually.', mbInformation, MB_YESNOCANCEL) of

        IDYES:
         if not DelTree(ExpandConstant('{app}'), True, True, True) then
                MsgBox('Directory is not deleted.' #13#13 'Directory or one of the files are used by the other application.', mbError, MB_OK);

        IDNO:
         if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
                MsgBox('Error opening the directory.' #13#13 'Directory is not found.', mbError, MB_OK);

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

Отправлено: 19:59, 04-01-2012 | #562


Аватара для XXXler

Ветеран


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

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


Вложения
Тип файла: rar PinToTaskband.rar
(3.6 Kb, 24 просмотров)

Цитата Лександер:
Покажи мне, неумному, как это будет через секцию [Icons] выглядеть? »
пример во вложении

-------
Исходные коды проектов

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

Отправлено: 20:00, 04-01-2012 | #563


Ветеран


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

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


Цитата El Sanchez:
Лександер, для юникода сменить тип переменной i на integer. »
Моё упущение, сразу не обратил внимание, что остался тип как раньше... поправил.
Цитата El Sanchez:
реализация мне понятна, но я выбрал цикл. »
Цитата El Sanchez:
В циклах со счетчиком начальные/конечные значения переменной цикла вычисляются один раз, поэтому LoadString не будет работать вхолостую. »
Смысл вашей мысли я понял и так же понимаю, что лишние 26 раз (для русского языка), обращаться к данной функции для современных процессоров это мелочь, но всё же приведённый мной пример выше, работает как минимум в 20 раз быстрее...

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

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

Отправлено: 20:27, 04-01-2012 | #564


Аватара для alert30

Ветеран


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

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


Скрипт распаковки FreeArc вроде правильно поставил, но вот только несколько ошибок обнаружил. Вот аттачмент.

Последний раз редактировалось alert30, 30-03-2012 в 06:32.


Отправлено: 08:08, 05-01-2012 | #565


Аватара для GARID

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


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

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


Пару моих шабломов



http://www.4shared.com/zip/GEah_Dnq/iinnnoo_skin_2.html

Отправлено: 14:24, 05-01-2012 | #566


Аватара для valyok666

Старожил


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

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


Цитата GARID:
Пара моих шаблонов тогда уж написал что пара моих скинов для inno
читать дальше »
http://www.4shared.com/zip/GEah_Dnq/iinnnoo_skin_2.html »

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


Отправлено: 18:48, 05-01-2012 | #567


Старожил


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

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


Подскажите пожалуйста как сделать так чтоб из архива freearc распаковывались только заданные файлы или папки?

-------
Стремись не к тому, чтобы добиться успеха, а к тому, чтобы твоя жизнь имела смысл.(Альберт Эйнштейн)


Отправлено: 19:51, 05-01-2012 | #568


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


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

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


Цитата krevedki:
У меня вот такая цель - имеется файл zip и мне надо обновить содержимое внутри него.
Для этого использую 7za.exe с cmd файлом, где прописаны параметры упаковки.
Внутри zip файла лежит папка, в которой лежат те файлы, которые мне надо заменить + ещё одна папка с другими файлами, которые мне трогать не надо.
Также у меня есть 10 файлов с расширением xml, которые собственно говоря мне и надо засунуть в zip файл, в котором лежат точно такие же файлы. Проще говоря это русификатор.
Мне нужно обновить содержимое zip файла, поместив в инсталятор только 10 файлов. Чтобы внутри инсталятора был 7za.exe и cmd файлик и 10 xml файлов.
При запуске чтобы распаковывались все эти файлы в папку где лежит zip файл (путь бы указывался при установке), затем запускался cmd файл, в нём у меня прописано всё необходимое для обновления содержимого zip файла. После того как все действия выполнятся, т.е. обновится содержимое, чтобы все xml файлы и exe + cmd файлы удалились и установка завершилась.

Вопрос вот в чём - какие модули для inno setup нужно использовать чтобы это реализовать и в какой последовательности их использовать?»
У меня такая же цель: заменить файлы в zip архиве. Убил на гугл два часа, грамотные ответы только здесь)

Вот что имеется для примера:

Код: Выделить весь код
[Files]
Source: Folder\Subfolder1\Brown.exe; DestDir: {app}\Folder\Subfolder1; Flags: deleteafterinstall // файл необходимо поместить в архив Colors.zip, находящийся в DestDir
Source: Folder\Subfolder1\Glass.exe; DestDir: {app}\Folder\Subfolder1; Flags: deleteafterinstall // файл необходимо поместить в архив Materials.zip, находящийся в DestDir
Source: Folder\Subfolder2\Brown.exe; DestDir: {app}\Folder\Subfolder2; Flags: deleteafterinstall // файл необходимо поместить в архив Colors.zip, находящийся в DestDir
Source: Folder\Subfolder2\Green.exe; DestDir: {app}\Folder\Subfolder2; Flags: deleteafterinstall // файл необходимо поместить в архив Colors.zip, находящийся в DestDir
Source: Folder\Subfolder2\Glass.exe; DestDir: {app}\Folder\Subfolder2; Flags: deleteafterinstall // файл необходимо поместить в архив Materials.zip, находящийся в DestDir
Source: Folder\Subfolder2\Stone.exe; DestDir: {app}\Folder\Subfolder2; Flags: deleteafterinstall // файл необходимо поместить в архив Materials.zip, находящийся в DestDir
Подскажите пожалуйста вариант без использования cmd файла. Сам архиватор думаю без разницы какой (unrar.exe, 7zip, freearc).

Пересмотрел весь архив скриптов и нашел только пример по распаковке, а нужна распаковка, замена и упаковка обратно.
читать дальше »
Код: Выделить весь код
[Run]
Filename: {src}\Rus\NFSC_RUS.exe; Components: rus; WorkingDir: {src}\Rus; 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}')+'\7za.exe';
  arc:=ExpandConstant('{src}')+'\ARC.7z';
  dest:=ExpandConstant('{app}');
  Exec(app, 'x "'+ arc + '" -y -o"'+ dest + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);
end;
end;


P.S. Забыл поздороваться. Всем привет и с наступающим Рождеством!

-------
Зачем?!? Зачем вы добавляете туда фоновые картинки и музыку?

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

Отправлено: 17:02, 06-01-2012 | #569


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


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

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


Как добавить задачу в "Назначенные задания" - файл *.job в WINDOWS\Tasks? Как его "создать" в Inno?

Нужно, чтобы приложение запускалось с Windows и/или в опредёленное время.

Ярлык приложения в "Автозагрузка" и/или в реестре НЕ подходит!!! Нужно, чтобы было "задание", т.к. оно связано с настройками программы. И чтобы оно устанавливалось ТОЛЬКО если пользователь его выберет при установке.

Отправлено: 14:52, 07-01-2012 | #570



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




 
Переход