InnoSetup Ultra

Inno Setup Ultra 5.5.1Программа для создания инсталляционных пакетов. Созданный утилитой инсталляционный файл какого-либо приложения, позволяет
  1. Оффлайн

    Xotabush

    Звание: Сталкер

    Участники

    Сообщений: 118

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

    Рейтинг: 3

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

    Баллы: 66

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

    Был: 2024-03-29 14:30

    Лайков: 1

    Если это поможет решить проблему

    5 мая 2012 - 18:08 / #51
  2. Оффлайн

    Gnom

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

    Знаток

    Сообщений: 79

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

    Рейтинг: 2

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

    Баллы: 51

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

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

    Лайков: 2

    Это помогло решить проблему
    Собственно, это скрипт полученный анпакером. соответственно, нет оригинальной секции кода, вот и ошибка - нет фукции или процедуры CheckInstallFor (она была как раз в секции кода) тоесть, нужно логически решить, что эта функция должна была делать, и согласно полученной логике ее воспроизвести. либо убрать проверки Check вообще и боротся с полученными в результати глюками (что не факт, может и прокатить, но все равно, раз была проверка, значит она нужна)
    5 мая 2012 - 18:42 / #52
  3. Оффлайн

    Xotabush

    Звание: Сталкер

    Участники

    Сообщений: 118

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

    Рейтинг: 3

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

    Баллы: 66

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

    Был: 2024-03-29 14:30

    Лайков: 1

    Спасибо за совет, буду разбираться
    5 мая 2012 - 20:52 / #53
  4. Оффлайн

    Leserg

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

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

    Сообщений: 929

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

    Рейтинг: 8

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

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Всем привет!

    Захотелось мне как-то собрать к одной программе инсталлятор с помощью программы Inno Setup. Как известно, этот установщик выпускается в двух редакциях: ANSI и Unicode. В отличии от ANSI, редакция Unicode позволяет создать инсталляторы, язык интерфейса которых будет всегда верно отображаться на системе пользователя, независимо от региональных установок. Исходя из соображений того, что система у меня дойч, а проверять и отлаживать работу установщика как-то необходимо, то я выбрал Unicode версию программы и приступил к работе. С помощью простенького мастера создания инсталляторов, который идет вместе с программой, можно быстро собрать простейший установщик. Но мне этого оказалось недостаточно. Необходимо было решать дополнительные задачи в процессе установки ПО, плюс хотелось наделить сам инсталлятор некоторыми особенностями, например отображения дополнительного кликабельного текста. С помощью описанных здесь примеров, а также примеров собранных на просторах сети Интернет, удалось решить все задачи, которые я для себя по-напридумывал.

    Но вот при отладке инсталляторе я столкнулся с неприятным сюрпризом. Те из вас, кто пользуется ANSI версией Inno Setup, далее могут не читать, т.к. эта информация касается только особенностей Unicode версии.


    Вложения:

      Вам запрещено скачивать вложения.

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

    1 июля 2012 - 23:10 / #54
  5. Оффлайн

    gazon01

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

    Команда

    Сообщений: 1212

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

    Рейтинг: 8

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

    Баллы: 66

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

    Лайков: 17

    Цитата: Leserg
    Тут же, как говорится, не отходя от кассы, набросал небольшую утилиту,


    а мог бы и ссылкой поделиться

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

    2 июля 2012 - 08:26 / #55
  6. Оффлайн

    Gnom

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

    Знаток

    Сообщений: 79

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

    Рейтинг: 2

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

    Баллы: 51

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

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

    Лайков: 2

    Цитата: gazon01
    Пользоваться функцией мне не позволил мой уровень знаний Inno Setup


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

    
    procedure InitializeWizard();
    var
        s: AnsiString;
        i :Integer;
    begin
       ExtractTemporaryFile('hex.txt');
        LoadStringFromFile(ExpandConstant('{tmp}hex.txt'), s);
        for i := 0 to 1 do
        begin
          with TLabel.Create(WizardForm) do
          begin
            Transparent := True;
            Parent := WizardForm;
            case i of
              0:begin
                  AutoSize := False;
                  Align := alClient;
                end;
              1:begin
                  Caption := s;
                  SetBounds(ScaleX(45), ScaleX(330), ScaleX(80), ScaleX(13));
                  onclick := @Click;
                  onmousedown := @MouseDown;
                  onmouseup := @MouseUp;
                  onmousemove := @MouseMove;
                end;
            end;
          end;
        end;
    end;

    Лейбелы сделал неименованными, поскольку там не производится над ними никаких операций, плюс в цикле, для сокращения размера кода
    Сообщение отредактировал 25 января 2023 - 21:09
    2 июля 2012 - 10:25 / #56
  7. Оффлайн

    Leserg

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

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

    Сообщений: 929

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

    Рейтинг: 8

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

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Цитата: gazon01
    Можно и исходничком...(в личку)


    Если интересно, то отправил через ЛС. Правда сильно не пинай, это моя первая программа на С#, хоть и сделана по примеру, но адаптирована мною для решения поставленной задачи (может где и начудил). Написана в Microsoft Visual Studio 2010.

    Цитата: Gnom
    Вносим хекстекст в текстовый файл, добавляем в файлы, распаковываем в нужный момент.


    Спасибо за пример. Но я пока не могу понять, как работать с несколькими строками. К примеру, будет 50 - 100 строк. Как считывать нужную строку и вставлять в нужное место, будь-то диалог или сообщение? Пронумеровывать их что-ли, типа: 1. Первая строка. 2. Вторая строка. и .т.д... N. строка. Или для каждой строки делать отдельный файл. В общем, этот вопрос для меня пока очень смутный. На данном этапе мне проще всего записать хекстекст прямо в сценарии.

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

    2 июля 2012 - 22:24 / #57
  8. Оффлайн

    Gnom

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

    Знаток

    Сообщений: 79

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

    Рейтинг: 2

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

    Баллы: 51

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

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

    Лайков: 2

    заодно добавлю вот такую фишку в поправленом мелоч,но все-дже
    4 октября 2012 - 15:48 / #58
  9. Оффлайн

    Leserg

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

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

    Сообщений: 929

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

    Рейтинг: 8

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

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Слушай Gnom, обнови в своей сборке плагин ISSplash (isgsg.dll). Точнее сказать версия осталась та же, но человек её модифицировал, сделал версии ANSI и Unicode (вторая ссылка рабочая). А то у тебя в обеих версиях лежит версия ANSI, которая с Unicodе не дружит.

    Еще у меня непонятка одна возникла. Не пойму я по какому принципу объединять несколько сценариев в один, когда получается несколько одинаковых процедур и функций (function InitializeSetup(), procedure InitializeWizard(), procedure DeinitializeSetup() и т.д.). Есть какие-то алгоритмы или правила?
    По отдельности компилируешь - работает. А копируешь все в один сценарий - не работает.

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

    4 октября 2012 - 22:47 / #59
  10. Оффлайн

    Gnom

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

    Знаток

    Сообщений: 79

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

    Рейтинг: 2

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

    Баллы: 51

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

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

    Лайков: 2

    isgsg.dll работает и в анси и в юникоде. Просто в ее вызове нужно сменить единственный параметр string на ansistring и все. и никаких доработок не требуется, тем более со стороны.(лично я доверяю только авторским исправлениям, за ооочень редким исключением)
    А объединение скриптов - это целое дело, но многие через него проходят. смысл такой, что все повторяющиеся функции нужно переименовать и вызвать в одной общей функции.
    Напимер, есть несколько процедур InitializeWizard - в одной мы цепляем музыку, в другой - оформление, в третьей еще чего-нибудь. делаем так :

    procedure Musick();
    begin
    .........
    end;
    procedure Redezign();
    begin
    .........
    end;
    procedure Picture();
    begin
    .........
    end;
    procedure InitializeWizard();
    begin
        Redezign;
        Picture;
        Musick;
    end;

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

    тут можно строить цепочки или поступить так-же, как с процедурами, но лучше переносить содержимое в одну - тут общего совета дать уже не могу, поскольку ситуация не так ясна, как с процедурами, и в каждом отдельном случае нужно уже смотреть.
    Сообщение отредактировал 25 января 2023 - 21:09
    5 октября 2012 - 08:27 / #60

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

---
Создано тем
1178
Всего сообщений
15356
Пользователей
17857
Новый участник
27fylhtq