Имя пользователя:
Пароль:
 | Правила  

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

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

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

Ветеран


Contributor


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


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

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


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

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]

Отправлено: 11:48, 10-03-2014

 

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


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

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


El Sanchez, ясно, но к сожалению не удаляет.
Возможно ли сделать так как было раньше (через секцию run), только расставить последовательность действий?
Так как тут просто очистка res_mods, а хотелось бы очистку res_mods\0.9.3 и удаление xvm.

Отправлено: 15:54, 19-10-2014 | #1851



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

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


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

Ветеран


Contributor


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

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


Цитата Kashtan007:
Возможно ли сделать так как было раньше (через секцию run), только расставить последовательность действий? »
Kashtan007, и будет так же как и в #1845

Цитата Kashtan007:
Так как тут просто очистка res_mods, а хотелось бы очистку res_mods\0.9.3 и удаление xvm. »
Kashtan007, т.е. бекапить нужно уже не всю папку res_mods, а res_mods\0.9.3 ?

Цитата Kashtan007:
ясно, но к сожалению не удаляет. »
Kashtan007, пример-то хоть пробовали? Или в другой скрипт перенесли и под себя правили? Начните с примера:
  1. Пример

    Код: Выделить весь код
    #expr Exec("cmd", "/c md D:\test\res_mods\0.9.3\test", "", 1, SW_HIDE)
    #expr Exec("cmd", "/c md D:\test\res_mods\xvm", "", 1, SW_HIDE)
    #expr Exec("cmd", "/c cd.>D:\test\path.file", "", 1, SW_HIDE)
    #expr Exec("cmd", "/c cd.>D:\test\res_mods\0.9.3\0.9.3.txt", "", 1, SW_HIDE)
    #expr Exec("cmd", "/c cd.>D:\test\res_mods\0.9.3\test\test.txt", "", 1, SW_HIDE)
    #expr Exec("cmd", "/c cd.>D:\test\res_mods\xvm\xvm.txt", "", 1, SW_HIDE)
    
    [Setup]
    AppName=test2
    AppVerName=test2
    DefaultDirName=D:\test
    
    [Languages]
    Name: ru; MessagesFile: compiler:Languages\russian.isl
    
    [CustomMessages]
    ru.DeleteOldMods=Удалить все старые моды
    ru.CreateBackupOldMods=Сохранить бекап старых модов
    ru.DeletingOldMods=Удаление старых модов...
    ru.RestoringOldMods=Восстановление старых модов...
    
    [Files]
    Source: {app}\res_mods\0.9.3\*; DestDir: {app}\ModPack\BackUp\res_mods\0.9.3; Flags: external createallsubdirs recursesubdirs skipifsourcedoesntexist; AfterInstall: DeleteFiles(ExpandConstant('{app}\res_mods\0.9.3\*'), True); Check: IsOldMods('CreateBackupOldMods')
    Source: {app}\path.file; DestDir: {app}\ModPack\OriginalFiles; Flags: external skipifsourcedoesntexist; AfterInstall: DeleteFiles(ExpandConstant('{app}\path.file'), False)
    
    [InstallDelete]
    Type: filesandordirs; Name: {app}\res_mods\xvm\*; Check: IsOldMods('DeleteOldMods')
    
    [UninstallRun]
    Filename: {cmd}; Parameters: "/c xcopy /ecihry ""{app}\ModPack\BackUp\res_mods\0.9.3"" ""{app}\res_mods\0.9.3\"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Check: IsOldMods('CreateBackupOldMods')
    Filename: {cmd}; Parameters: "/c xcopy /ecihry ""{app}\ModPack\OriginalFiles\path.file"" ""{app}\"""; Flags: runhidden
    
    [code]
    var
        OldModsListBox: TNewCheckListBox;
    
    ///////////////////////////////////////////////
    function IsOldMods(const Msg: String): Boolean;
    begin
        with OldModsListBox do
            Result := Checked[Items.IndexOf(CustomMessage(Msg))]
    end;
    
    //////////////////////////////
    procedure CreateSelectDirPage;
    var
        rt: TRect;
    begin
        OldModsListBox := TNewCheckListBox.Create(WizardForm);
        with OldModsListBox do
        begin
            Parent := WizardForm.SelectDirPage;
            Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(10);
            Width := Parent.ClientWidth;
            BorderStyle := bsNone;
            ParentColor := True;
            ShowLines := False;
            WantTabs := True;
            AddCheckBox(CustomMessage('DeleteOldMods'), '', 0, True, True, True, False, nil);
            AddCheckBox(CustomMessage('CreateBackupOldMods'), '', 1, True, True, False, True, nil);
            rt := ItemRect(ItemCount-1);
            Height := rt.Bottom;
        end;
    end;
    
    ////////////////////////////////////////////////////////////////////////////
    procedure DeleteFiles(const Path: String; const DeleteSubdirsAlso: Boolean);
    begin
        DelTree(Path, False, True, DeleteSubdirsAlso);
    end;
    
    /////////////////////////////
    procedure InitializeWizard();
    begin
        CreateSelectDirPage;
    end;
    
  2. В примере препроцессором создаются тестовые папки с файлами по пути D:\test. В ней находятся файл path.file для проверки сохранения в OriginalFiles, папка res_mods для проверки сохранения в BackUp. В res_mods 2 папки: xvm и 0.9.3 (плюс подпапка test), в каждой из папок по файлу с именем папки, в которой находится файл. Все готово к экспериментам.
  3. В IDE ставим брейкпоинты (F5 или мышкой) на 2-х строках из секции Files и на строке из секции InstallDelete.
  4. Запускаем скрипт на выполнение - F9.
  5. После кнопки "Установить" сработает первый брейк на InstallDelete. Жмем на F9, чтобы исполнение пошло дальше до второго брейка, это будет первая сторока из секции Files. Между этими 2-мя брейками выполнилась строка из InstallDelete. Смотрим что там. Там идет удаление папок и файлов из res_mods\xvm. Смотрим, так ли это. Открываем папку res_mods\xvm и видим, что она пуста, лежащего в ней файла xvm.txt нет.
  6. Жмем на F9, чтобы исполнение пошло дальше до третьего брейка, это будет вторая сторока из секции Files. Смотрим, что случилось за это время. В первой выполнившейся строке из Files написано скопировать из res_mods\0.9.3 все файлы и папки в папку ModPack\BackUp\res_mods\0.9.3, после этого удалить из res_mods\0.9.3 все файлы и папки. Смотрим, так ли это. Открываем папку ModPack\BackUp\res_mods\0.9.3 и видим, что в ней файл 0.9.3.txt и папка test с файлом test.txt. Открываем res_mods\0.9.3 и видим, что она пуста.
  7. Жмем на F9, заканчиваем установку. Смотрим, что случилось за это время. Отработала вторая строка из Files, в которой написано файл path.file скопировать в ModPack\OriginalFiles, а после удалить. Смотрим, так ли это. Открываем папку ModPack\OriginalFiles, видим в ней файл path.file, в D:\test его нет.
  8. Запускаем деинсталлятор unins000.exe. В секции UninstallRun строки, возвращающие файлы из ModPack\BackUp\res_mods\0.9.3 и ModPack\OriginalFiles в D:\test\res_mods\0.9.3 и D:\test соответственно. По окончании видим, что сохраненные файлы и папки вернулись назад.
  9. Что я делаю не так, что у вас не выходит?
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:31, 19-10-2014 | #1852


Аватара для Dodakaedr

Ветеран


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

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


Подскажите, пожалуйста, как можно с помощью cmd перемещать, копировать, удалять папки с файлами и подпапками через секцию [code]?

-------
Inno Setup 5 Ultra Unicode


Отправлено: 08:23, 20-10-2014 | #1853


Аватара для kotyarko@fb

Старожил


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

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


Цитата Dodakaedr:
Подскажите, пожалуйста, как можно с помощью cmd перемещать, копировать, удалять папки с файлами и подпапками через секцию [code]? »
Смотрите функцию ShellExec. И вызывайте её на том этапе установки, когда вам это нужно, через CurStepChanged, CurPageChanged, InitializeWizard, InitializeSetup и т.д.

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 17:42, 20-10-2014 | #1854


Аватара для Dodakaedr

Ветеран


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

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


kotyarko@fb, Ну да не точно сказал.... нет не файл cmd, а командная строка(cmd.exe)

-------
Inno Setup 5 Ultra Unicode


Отправлено: 19:01, 20-10-2014 | #1855


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


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

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


всем привет,подскажите как сделать стр в компонентах

Отправлено: 20:36, 20-10-2014 | #1856


Аватара для kotyarko@fb

Старожил


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

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


Цитата ekspoint:
всем привет,подскажите как сделать стр в компонентах »
А подробнее?

Цитата Dodakaedr:
Ну да не точно сказал.... нет не файл cmd, а командная строка(cmd.exe) »
Ок, а если через секцию Сode, то зачем cmd нужен?
Можно стандартными средствами Inno.

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 21:14, 20-10-2014 | #1857


Аватара для Dodakaedr

Ветеран


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

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


Цитата kotyarko@fb:
Можно стандартными средствами Inno. »
Например?

-------
Inno Setup 5 Ultra Unicode


Отправлено: 21:15, 20-10-2014 | #1858


SHVtYW4=


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

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


Цитата ekspoint:
как сделать стр в компонентах »
Что это такое: "стр"? "Страница"? Пишите полностью.

Код: Выделить весь код
[Setup]
AppName=My program
AppVerName=1.5
DefaultDirName={pf}\My program
OutputDir=.

[Components]
Name: cmp1; Description: Компонент 1
Name: cmp2; Description: Компонент 2
Name: cmp3; Description: Компонент 3
Name: cmp4; Description: Компонент 4

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 21:16, 20-10-2014 | #1859


SHVtYW4=


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

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


Цитата Dodakaedr:
Подскажите, пожалуйста, как можно с помощью cmd перемещать, копировать, удалять папки с файлами и подпапками через секцию [code]? »
Пример удаления папки "1" (с содержимым), расположенную в корне системного диска:
Код: Выделить весь код
[Code]
procedure InitializeWizard();
var
  ResultCode: Integer;
begin
  Exec('cmd.exe', ExpandConstant('/C RD {sd}\1 /S /Q'), ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilIdle, ResultCode);
end;

Последний раз редактировалось Nordek, 20-10-2014 в 22:26.

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

Отправлено: 22:16, 20-10-2014 | #1860



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход