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

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

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

Аватара для 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] - Скачать;


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

Отправлено: 19:06, 28-03-2013

 

Аватара для Johny777

Ветеран


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

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


tr011_tmn, удаление самого каталога вместе с содержимым подойдёт?

читать дальше »
Код: Выделить весь код
const
    FOLDER_NAME = 'Redist';

var
    DeleteRedistCheckBox: TCheckBox;

// Force - Boolean value that is true if folders with the read-only attribute set are to be deleted; false (default) if they are not.
procedure DeleteFolder(const FolderPath: String; const Force: Boolean);
var
    oFS: Variant;
begin
    if not DirExists(FolderPath) then Exit;
    oFS := CreateOleObject('Scripting.FileSystemObject');
    try
        oFS.DeleteFolder(RemoveBackslash(FolderPath), Force);
    except
        ShowExceptionMessage();
    end;
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
    if CurStep = ssPostInstall then
      if DeleteRedistCheckBox.Checked then DeleteFolder(AddBackslash(ExpandConstant('{app}')) + FOLDER_NAME, True);
      // или DelTree(AddBackslash(ExpandConstant('{app}')) + FOLDER_NAME, True, True, True);
end;


procedure InitializeWizard();
begin
    DeleteRedistCheckBox := TCheckBox.Create(WizardForm.InstallingPage);
    with DeleteRedistCheckBox do
    begin
        Parent := WizardForm.InstallingPage;
        SetBounds(ScaleX(100), ScaleY(100), ScaleX(100), ScaleY(16));
        Caption := 'Delete Redist Folder';
    end;
end;

Последний раз редактировалось Johny777, 14-08-2013 в 15:21.

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

Отправлено: 15:02, 14-08-2013 | #1011



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

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


Старожил


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

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


Johny777 у тебя случаем нет примера Переименование файлов не по маске а по определенному названию vo_ russian.spk на vo_english.spk в зависимости от выбранного компонента

Отправлено: 15:37, 14-08-2013 | #1012


Аватара для tr011_tmn

Ветеран


Автор проектов


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

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


Цитата Johny777:
tr011_tmn, удаление самого каталога вместе с содержимым подойдёт? »
глянул, если верно понял то {app} не будет трогаться при удалении FOLDER_NAME = 'Redist';. Все верно?

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 15:56, 14-08-2013 | #1013


Аватара для Johny777

Ветеран


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

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


vint56,
Цитата vint56:
у тебя случаем нет примера Переименование файлов не по маске а по определенному названию vo_ russian.spk на vo_english.spk в зависимости от выбранного компонента »
Не было пока ты не спросил вот тебе процедура
читать дальше »
Код: Выделить весь код
[Components]
Name: en; Description: Russian to English; Flags: exclusive
Name: ru; Description: English to Russian; Flags: exclusive

;[Files]
;Source: Folder\*; DestDir: {app}; Flags: recursesubdirs createallsubdirs onlyifdoesntexist


[code    ]
#define A = (Defined UNICODE) ? "W" : "A"

function MoveFile(lpExistingFileName, lpNewFileName: String): BOOL; external 'MoveFile{#A}@kernel32.dll stdcall';

procedure RenameFileChunks(const RootFolder, SourceFileChunk, DestFileChunk: String; const Recurse: Boolean);
var
    NewSearchPath, TempFileName: String;
    FindRec: TFindRec;
begin
    NewSearchPath := AddBackslash(RemoveBackslash(RootFolder));

    if FindFirst(NewSearchPath + '*.*', FindRec) then
    try
        repeat
        
            if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
            begin

                if Pos(SourceFileChunk, FindRec.Name) <> 0 then
                begin
                    TempFileName := FindRec.Name;
                    StringChange(TempFileName, SourceFileChunk, DestFileChunk);
                    MoveFile(NewSearchPath + FindRec.Name, NewSearchPath + TempFileName);
                end;
            end else
            if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY) and (FindRec.Name <> '.') and (FindRec.Name <> '..') then
              if Recurse then RenameFileChunks(NewSearchPath + FindRec.Name, SourceFileChunk, DestFileChunk, Recurse);
                  
        until not FindNext(FindRec);
    finally
        FindClose(FindRec);
    end;
end;


procedure CurStepChanged(CurStep: TSetupStep);
var
    AppPath: String;
begin
    if CurStep = ssPostInstall then
    begin
        AppPath := ExpandConstant('{app}');
        MsgBox('Сейчас переименую', mbInformation, MB_OK);
        if IsComponentSelected('ru') then
          RenameFileChunks(AppPath, 'english', 'russian', True)
        
        if IsComponentSelected('en') then
          RenameFileChunks(AppPath, 'russian', 'english', True);
    end;
end;

прототип: procedure RenameFileChunks(const RootFolder, SourceFileChunk, DestFileChunk: String; const Recurse: Boolean);

где:
RootFolder - исходная папка с файлами и папками, где нужно переименовывать
SourceFileChunk - часть в имени файла которую нужно переименовать, в данном случае 'russian' в vo_ russian.spk
DestFileChunk - часть в имени файла в которую нужно переименовать - 'english'
Recurse - булев значение. Если True то будет искать в подкаталогах RootFolder-а, в противном случае только в RootFolder

вызываешь процедуру например на этапе ssPostInstall для соответсвующих компонентов, если они выбраны ( IsComponentSelected(...) ... )

==============================================================

tr011_tmn,
Цитата tr011_tmn:
Все верно? »
верно, слетит только папка Redist с её содержимым

Последний раз редактировалось Johny777, 14-08-2013 в 19:00. Причина: заменил глючную RenameFile на рабочую MoveFile (WinApi)

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

Отправлено: 17:18, 14-08-2013 | #1014


Старожил


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

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


Johny777 а что {app} константа не работает
procedure InitializeWizard;
begin
RenameFileChunks('C:\Program Files (x86)\ISDone', 'english', 'russian', True); только если так
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:48, 14-08-2013 | #1015


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


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

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


Здравствуйте. Возможно ли сделать такую фишку:

Если существует файл config.ini в папке, куда ставится программа, но нет определённой ветки в реестре, установщик заменяет файл config.ini и создаёт ветку с определённым значением и наоборот.
Если существует и то, и то, то установка ничего из них не трогает.
Если нет ни того, ни того, то установка создаёт и ветку, и файл.

Голову сломал, ничего на ум не приходит.

Отправлено: 18:30, 14-08-2013 | #1016


Аватара для Johny777

Ветеран


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

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


vint56,
Цитата vint56:
а что {app} константа не работает »
она работает и всё остальное кроме встроенной RenameFile, которая по непонятным мне причинам в данном случае НЕ работает (моё доверие к встроенным функциям упало ещё на одно деление )

заместо её используй WinApi функцию MoveFile, которой можно переименовывать файлы

обновил предыдущий код
всё понятное дело перед этим проверил у себя на безошибочную работу



volga163@vk, создать ветку в реестре? что-то я не пойму. Может ключ. И где? в каком разделе? Какие значения туда внести? Как ключ называется? Подробнее насчёт реестра скажи
а лучше всего выложи содержание .reg файла

Последний раз редактировалось Johny777, 14-08-2013 в 19:28.

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

Отправлено: 18:43, 14-08-2013 | #1017


Старожил


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

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


Johny777 Большое спасибо

Отправлено: 19:00, 14-08-2013 | #1018


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


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

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


Здравствуйте!
В моем скрипте создаются и используются кастомные формочки. Сам инсталляор должен быть двуязычным (рус + англ). Текст на стандартных формах при выборе определенного языка на этот язык переводится, а текст на кастомных формах - очевидно, нет. Может, кто подскажет, как корректно реализовать двуязычность для кастомных форм? Это в скрипте создания форм надо мониторить язык как-то и в зависимости от языка выводить разные сообщения? Или это нужно как-то править языковые (.isl) файлы?
В работе с inno новичок, буду благодарна за помощь

Отправлено: 19:16, 14-08-2013 | #1019


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


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

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


Цитата Johny777:
Подробнее насчёт реестра скажи »
Проверяем наличие этой ветки: HKCU\Control Panel\MyApp\Test\, значение типа expandsz, с текстом "ID" и именем ID. Вот как на картинке:


Отправлено: 19:33, 14-08-2013 | #1020



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход