Скрипт русификатора

Предоставляю вам рабочий скрипт для , на мой взгляд, самого лучшего установщика Inno.Немного теории...Для подготовленный
  1. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2177

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3395

    Был: 2024-02-16 10:20

    Лайков: 196



    Предоставляю вам рабочий скрипт для , на мой взгляд, самого лучшего установщика Inno.



    Немного теории...

    Для подготовленный пользователей установка русификатора не составляет проблем, мозги и руки срабатывают в унисон автоматом.
    Но для начинающих пользователей установка русификатора это танцы с бубном, а если установщика нет и предлагается замена папок - настает полный пипец.
    Итак, что должен уметь установщик, чтобы конечный пользователь не испытывал этих неудобств.

    Что могёт этот скрипт?

    1. Автоматически определяет папку установки и обновляемые файлы, если найдены, то установка продолжится, если нет, то вас оповестят об этом.
    2. Проверяет вначале установки запущена ли обновляемая программа. Если выполняется, то будет предложено завершить процесс и продолжить или прекратить установку русификатора. Если пользователь продолжил установку, то все обновляемые файлы будут перемещены в папку Backup.
    3. Проверяет контрольную сумму обновляемого файла. Исход обычный - или установка или пишите письма на деревню дедушке.
    4. Так как русификаторы я создаю для своего сайта, то вставил фишку проверки внешнего файла на присутствие и на целостность. Исход такой же, как пунктом выше.
    5. И немаловажная фишка - если по какой то причине пользователю не понравился русификатор, и он хочет вернуть все назад, то ему просто надо запустить деинсталляцию русификатора. При этом будет проверка запущена ли программа. Если выполняется, то будет предложено завершить процесс и продолжить или прекратить удаление. Если пользователь продолжил удаление, то все сохраненные файлы в папке Backup будут перемещены на их родное место.



    А теперь скрипт и немного описания, я коротко на каждую функцию вставил уже туда.

    На этой картинке все обычно, вставляете свои данные и всего делов то. Вверху данные Inno Setup Preprocessor.
    Единственно я использую для сборок и русификаторов разные файлы языка (внизу). Этот файл в архиве.



    Это файлы, которые нужно вставить в программу. Все прописывается как в блокноте напрямую - пути и имена.
    За выделенное напишу ниже.



    Это работа с реестром. Например в этой программе надо было при вставке файла-лекарства LicenseMgr.dll очистить ветку реестра перед установкой русификатора.
    Зачем? Просто если уже был установлен ключ от версии EaseUS Partition Master Pro, а это лекарство для EaseUS Partition Master Technician Edition, то запустить программу вам не удастся. Нужно вручную зайти в реестр и удалить ветку. Здесь же делает это за вас установщик. Обратите внимание - для 32-бит и 64-бит разные ключи. Реализовывается это просто - на картинке где стрелка 2 для 64-бит, а где стрелка 3 для 32-бит. Стрелка 1 удаляет ветку перед установкой.



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



    Это задачи, тут вы можете прописывать что угодно. Установлены радиокнопки одного действия. Только один выбор - или одно или другое.
    Задача doktor подключает файл LicenseMgr.dll в работу и он заносится в папку с программой. Ну а если выбрали другое, то установка происходит без лекарства.



    Вот мы и подобрались к самому интересному. Это код бэкапа, он работает вместе с файлами - нужно прописать BeforeInstall: CreateBackup для каждого заменяемого файла.
    Смотрите второй рисунок сверху где раздел Files. Все бэкапится в папку Backup. Для работы этого кода нужен скрипт SHFileOperation.iss. Положил в архив.



    Это проверка проверка MD5 ехе-файла, стрелки указывают что нужно заменить для своих целей.



    Это проверка проверка MD5 внешнего файла, стрелки указывают что нужно заменить для своих целей.
    Этот файл должен всегда быть рядом с установщиком. При любых действиях с ним русификатор не установится.
    Вы можете прицепить любой файл.



    Это проверка на присутствие определенных файлов в папке с установленной программой, стрелки указывают что нужно заменить для своих целей.



    Это проверка на присутствие файла рядом с установщиком. Если его нет рядом с ним то русификатор не установится.



    Это проверяется запущена ли программа при удалении русификатора, стрелки указывают что нужно заменить для своих целей.



    Это проверяется запущена ли программа при установке русификатора, стрелки указывают что нужно заменить для своих целей.





    Но вот в принципе и вся сказка...
    Еще раз напоминаю - не переносите строки в рабочем скрипте как на картинках - это я сделал чтобы уменьшить их размер.



    Качаем архив...

    Сообщение отредактировал 25 января 2023 - 16:11

    31 января 2014 - 21:32 / #1
  2. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2177

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3395

    Был: 2024-02-16 10:20

    Лайков: 196

    Цитата: Kopejkin
    Я бы скачал, но он где-то за облаками спрятался...



    Залил на другое облако
    Сообщение отредактировал 3 августа 2018 - 23:54

    31 января 2014 - 22:30 / #2
  3. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 913

    Создано тем: 76

    Рейтинг: 8

    Репа: (130|130|0)

    Баллы: 1486

    Был: 2024-03-16 13:12

    Лайков: 111

    Я как мужика с молотком на главной увидел и надпись "Универсальный скрипт русификатора...", то грешным делом подумал ,что ты предлагаешь таким макаром русики устанавливать. Порадовал.
    Статья отличная. Но думаю, что нужен некоторый опыт работы с этим инсталлятором, чтобы во всем этом разобраться. Начинающие утонут. Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку (см. рис. 2).

    Кто ищет, тот всегда найдет!

    1 февраля 2014 - 01:00 / #3
  4. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2177

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3395

    Был: 2024-02-16 10:20

    Лайков: 196

    Цитата: Leserg
    Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку



    Да, упустил это. Но для начинающих делать нечего - это для подготовленных пользователей.
    Кстати, не все вручную надо прописывать - в настройках кроме кода можно установкой гальки прописать
    Сообщение отредактировал 3 августа 2018 - 23:55

    1 февраля 2014 - 11:52 / #4
  5. Оффлайн

    pp0312

    Звание: Бывалый

    Мастер

    Сообщений: 171

    Создано тем: 24

    Рейтинг: 4

    Репа: (30|30|0)

    Баллы: 46

    Страна: не указана!

    Был: 2024-03-28 16:06

    Лайков: 21

    пробовал  с помощью Inno Extractor выдернуть скрипт и посмотреть, но все время фигушки 
    Цитата: WYLEK
    предлагается замена папок - настает полный пипец.

    Для этого есть простенькая программа Patch Maker  конечна она лишена многих прелестей, но патчер сделает любой юзер.
    Урок суперный, главное его теперь в свою голову запихать. Спасибо
    Сообщение отредактировал 3 августа 2018 - 23:56
    2 февраля 2014 - 13:50 / #5
  6. Оффлайн

    BullFFm

    Звание: Прибывший

    Участники

    Сообщений: 7

    Создано тем: 1

    Рейтинг: 1

    Репа: (2|2|0)

    Баллы: 51

    Страна: не указана!

    Был: 2022-09-11 16:33

    Цитата: Leserg
    Начинающие утонут.

    Да, это так! Ещё в июне ушёл в изучение Inno Setup, так и не вышел. Сложно, но какая радость когда что то выходит! (Особенно что нибудь в секции  Код)

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



    За статью спасибо. Может что нибудь нового узнаю.
    Сообщение отредактировал 3 августа 2018 - 23:58

    Всё сложно снять, что грамотно одето!..

    2 февраля 2014 - 20:16 / #6
  7. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2177

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3395

    Был: 2024-02-16 10:20

    Лайков: 196

    Цитата: BullFFm
    Как это всё происходит, считывается запись (#define MyAppName "Тут название") и считанное записывается туда где стоит {# MyAppName}



    Нет, в секции Code прописывать только вручную.


    Мое первое знакомство с Inno Setup было ровно 1 минута...
    Больше года и не подходил к этому установщику, а теперь я и не помню сколько лет другого мне и не надо.
    У нас на сайте есть Мастер кода Gnom, так что если есть проблемы - пишите, я думаю он поможет.
    Сообщение отредактировал 3 августа 2018 - 23:58

    2 февраля 2014 - 22:21 / #7
  8. Оффлайн

    BullFFm

    Звание: Прибывший

    Участники

    Сообщений: 7

    Создано тем: 1

    Рейтинг: 1

    Репа: (2|2|0)

    Баллы: 51

    Страна: не указана!

    Был: 2022-09-11 16:33

    Цитата: WYLEK
    Нет, в секции Code прописывать только вручную.

    Почему? Я делаю так как написал выше и всё работает, можете попробовать.


    Я  познакомился с Inno Setup так же. Товарища Gnom"a видел на сайте и знаком с его работами но всё равно спасибо за совет.
    Сообщение отредактировал 3 августа 2018 - 23:59

    Всё сложно снять, что грамотно одето!..

    2 февраля 2014 - 22:36 / #8
  9. Оффлайн

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    не получается прикрутить к скрипту вот это
    // -------------Описание: Команда WYLEK.RU--------------------------------------
    var
    MouseLabel,SiteLabel: TLabel;
    procedure SiteLabelOnClick(Sender: TObject);
    var
    ErrorCode: Integer;
    begin
    ShellExec('open', 'http://www.wylek.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
    end;
    procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
    SiteLabel.Font.Color:=clRed
    end;
    procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
    SiteLabel.Font.Color:=clBlue
    end;
    procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
    SiteLabel.Font.Color:=clGreen
    end;
    procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
    SiteLabel.Font.Color:=clBlue
    end;
    procedure InitializeWizard8();
    begin
    MouseLabel:=TLabel.Create(WizardForm)
    MouseLabel.Width:=WizardForm.Width
    MouseLabel.Height:=WizardForm.Height
    MouseLabel.Autosize:=False
    MouseLabel.Transparent:=True
    MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
    MouseLabel.Parent:=WizardForm
    SiteLabel:=TLabel.Create(WizardForm)
    SiteLabel.Left:=10
    SiteLabel.Top:=320
    SiteLabel.Cursor:=crHand
    SiteLabel.Font.Color:=clBlue
    SiteLabel.Caption:='Сайт русификации'
    SiteLabel.OnClick:=@SiteLabelOnClick
    SiteLabel.OnMouseDown:=@SiteLabelMouseDown
    SiteLabel.OnMouseUp:=@SiteLabelMouseUp
    SiteLabel.OnMouseMove:=@SiteLabelMouseMove
    SiteLabel.Parent:=WizardForm
    end;
    procedure HideInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := False;
    end;
    //*******//
    procedure ShowInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := True;
    end;
    Сообщение отредактировал 25 января 2023 - 16:12

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    30 января 2015 - 01:28 / #9
  10. Оффлайн

    Gnom

    Звание: Новичок

    Знаток

    Сообщений: 79

    Создано тем: 1

    Рейтинг: 2

    Репа: (6|6|0)

    Баллы: 51

    Страна: не указана!

    Был: 2023-04-05 20:55

    Лайков: 2

    gazon01, скрипт свой дай. Можно в личку.
    1 февраля 2015 - 19:40 / #10

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1171
Всего сообщений
15263
Пользователей
17832
Новый участник
irina_s