На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ Inno Setup
Пожалуйста, выделяйте текст инсталлятора написанного на Inno Setup тегом [сode=ins] ... [/сode]. Для этого используйте кнопку [code=ins] в форме ответа или выпадающего списка, если нужно вставить код из другой программы.


Обязательно указывать:

  • Программу, используемую для создания инсталлятора.



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


Выразить свое отношение к модераторам раздела можно здесь: Profi, Fester
Модераторы: Fester
  
> Объясните мне, глупому , плиз :)
    Взялся я значти сделать инсталл, но чтот никак не дойду до 2х весчей:
    1. мне надо чтоб в нужную мне папку (заданную в инстале) распаковывался архив RAR (или егож SFX)
    2. мне нужно чтоб инсталл прописал инфу в реестр, но не совсем конкретную, тоесть чтоб он написал расположение файла EXE, папки где он лежит и тд

    просто в написании скриптов я не особо силён, а в прогах типа Setup Factory чтот я такого не нашёл :(

    просто работа стоит :((
    Сообщение отредактировано: Profi -
      1) у сделанного WinRAR'ом SFX'а есть параметр "в какую папту распаковываться" (думаю, что у всех остальных SFX'ов такой параметр тоже есть)
      2) в MSI есьть таблица Registry и туда можно заносить много всего, в том числе и высчитываемые в процессе инстоляции пути. Так что MSI'ем эта проблема решается на раз.
        Fester спасибо, буду мучить,но по первому пункту наверн не совсем прально выразился :))
        мне надо чтоб инсталлер распаковывал SFX архив в заданную в инсталлере же папку

        нашёл програмку Advanced Installer 4.9.2 вроде всё в ней хорошо, даж нашёл как в реестр добавлять инфу, но про архивы чтот ничего
          Сделай CustomAction, кототый будет считывать имя папки и запускать SFX с нужными параметрами.
          Надеюсь это только распаковка? Без инстоляции? Т.к. в один момент времени может работать только одна deferred фаза. Другими словами, система может обновляться только одним инсталлером в один момент времени.
            Fester
            а подскажи мне плиз последнюю фигню, если конечно знаком с прогой Advanced Installer
            она сама умеет сжимать файлы методом LZMA и всёб ничего, но созданный инсталл сначала распаковывает всё во временную папку, а уж потом ставит...
            мне инсталлы нужны в основном для прикручивания к ним архивов по многу гигабайт...и временная папка - это УЖАСНО !!
            можешь помочь ??
              Цитата RIP @
              если конечно знаком с прогой Advanced Installer

              Не знаком :no:


              Цитата RIP @
              но созданный инсталл сначала распаковывает всё во временную папку, а уж потом ставит...

              Ну правильно, а откуда ему еще ставить?


              Цитата RIP @
              мне инсталлы нужны в основном для прикручивания к ним архивов по многу гигабайт

              переведи :)
                Fester
                мне над короч, чтоб архив 7-zip рядом валялся и инсталл, никуда его не трогая, извлекал из него файлы в заданную в инстале директорию
                  Сделай CustomAction, которая распаковывает твой архив туда, куда тебе неда.

                  При этом инстоляшка не должна ничего знать о существовании архива. Таким образом, в момент вызова CustomAction ты будешь знать где лежит нужный тебе архив. CustomAction должна быть вызвана после CostFinalize - таким образом все пути и переменные инсталлера уже будут инициализированы и ты сможешь получить название конечной директории.
                  Ну а запустить распаковку - это уже CreateProcess с нужной командной строкой.
                    Fester спасибо :)
                    буду разбираться :)
                    а на примере какой проги ты это описываешь ? :)
                      Ээээ, ну у нас тут своя прога :)
                      Вобщем это на онове pure MSI.
                        Fester
                        так конечно сложнее сотворить...
                        нужно задать в CustomActions экшн, который будет давать комману на распаковку архива...над ток найти где :))
                        и, как я понял, чтоб оно работало, нужно чтоб на конечном компьютере (в моём случае - любом) должен быть установлен рар...так ?

                        Добавлено
                        и как задать архиву - что нужно распаковываться в папку которая была указана в инсталле ??
                          Цитата RIP @
                          так конечно сложнее сотворить...

                          Ничего сложного :)

                          1) Возьми какую-нибудь программу... ну например InstallShield (думаю, что там можно вставлять CustomAction'ы)
                          2) Напиши простенькую dll с CustomAction'ами (тебе только один кастом экшн нужен)
                          3) Засунь длл в пакет
                          4) Установи свой CustomAction после CostFinalize (это в таблице InstallExecuteSequence)
                          фсе :)


                          Цитата RIP @
                          должен быть установлен рар

                          Зачем? У тебя же SFX архив :)
                            Fester
                            ты сейчас общаешься с нубом :))
                            напиши простенькую длл это ты хорошо сказал :))

                            Добавлено
                            тем более я не нашёл там экшна на распаковку архива :(
                              Цитата RIP @
                              и как задать архиву - что нужно распаковываться в папку которая была указана в инсталле ??

                              В зависимости от папки, если это destination path (+ какие-то поддиректории), то эту destination path ты можешь функцией MsiGetTargetPath (приклеить слэши итд ты, я думаю сам сможешь :) ) Директорию, откуда стартовал msi можно получить функцией MsiGetSourcePath.

                              Добавлено
                              Цитата RIP @
                              тем более я не нашёл там экшна на распаковку архива

                              Так и не найдешь :) Это же CustomAction :) Т.е. ты делаешь dll с экспортируемыми функциями и потом говоришь MSI'ю какие функции из твоей длл и в каком порядке надо вызывать :)
                                не в курсе - какую комманду приписать к sfx архиву чтоб он распаковался в нужную директорию ???
                                я надеюсь, это был последний вопрос :) а то я уже наглею похоже :)
                                  Цитата RIP @
                                  не в курсе - какую комманду приписать к sfx архиву чтоб он распаковался в нужную директорию ???

                                  У нас это смотрится так:

                                  в поле с коментариями к sfx архиву написано просто "Path=%temp%\имя_директории" :)
                                  Так что я бы сказал строка должнабыть такой:
                                  путь_к_твоему_sfx_архиву.exe path="куда_распаковывать"


                                  Цитата RIP @
                                  а то я уже наглею похоже

                                  все ок :)
                                    а не знаешь, нельзя задать в .reg файле чтоб он прописывал в реестр инфу о ПАПКЕ В КОТОРОЙ ЛЕЖИТ ??
                                    я просто не нашёл в нете :(

                                    просто тогда мне не придёться тут геморствовать с инсталлом :(
                                      В MSI есть таблица registry, туда можно все регистри записать.
                                      Я не могу себе представить, чтобы какой-либо из существующих покетов для создания инсталеров не поддерживал бы записи реестра. (это даже Visual Studio умеет делать :) )
                                        нененене ты мя не понял :)) чтоб вобще без инсталлера :) РЕГ файлик
                                          эээ... не представляю себе о чем ты :)
                                            Fester
                                            вобщем я затеял прогу инсталлер только для того чтоб она распаковывала архив 7-zip и заносила инфу в реестр :)
                                            просто рег-файлы вроде прописывают КОНКРЕТНО типа:

                                            [HKEY_LOCAL_MACHINE\SOFTWARE\Название фирмы\Название продукта]
                                            @="D:\\programs\\Название\\123.exe"


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

                                            [HKEY_LOCAL_MACHINE\SOFTWARE\Название фирмы\Название продукта]
                                            @="КУДА РАСПАКОВАЛ\\Название\\123.exe"
                                              Ну если только ты напишешь прогу, которая будет писать регистри и сразу после распаковки sfx архива ты будешь эту прогу запускать. Уже из целевой директории.

                                              Но это ИМХО изврат :) Инсталлер-то ты все равно делать будешь... а заполнить таблицу Registry - плевое дело :)
                                                1) Создаешь визардом dll.
                                                2) определяешь в ней функцию

                                                extern "C" __declspec(dllexport) int MyFirstCustomAction (MSIHANDLE hInstall)
                                                {
                                                // ну и тут все определяешь
                                                }

                                                если завтра до работы доберусь, то напишу код подробнее.
                                                  Fester
                                                  ну да, желательно поподробнее :)
                                                    Сори, но до работы я добересь только 25-ого...
                                                      Fester
                                                      ну, если не сложно то после 25 :))
                                                      мне не к спеху :)
                                                        Так, перечитал... посмотрел длл с кодом... и не увидил, что тут еще подробнее расписывать? :)

                                                        Длл, я думаю, ты создать сможешь :)
                                                        Экспортируемые функции тоже есть.
                                                        Тебе надо только наполнить эти экшены своим кодом...
                                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                        0 пользователей:


                                                        Рейтинг@Mail.ru
                                                        [ Script execution time: 0,0600 ]   [ 15 queries used ]   [ Generated: 12.05.24, 16:06 GMT ]