Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.191.214] |
|
Сообщ.
#1
,
|
|
|
Взялся я значти сделать инсталл, но чтот никак не дойду до 2х весчей:
1. мне надо чтоб в нужную мне папку (заданную в инстале) распаковывался архив RAR (или егож SFX) 2. мне нужно чтоб инсталл прописал инфу в реестр, но не совсем конкретную, тоесть чтоб он написал расположение файла EXE, папки где он лежит и тд просто в написании скриптов я не особо силён, а в прогах типа Setup Factory чтот я такого не нашёл просто работа стоит ( |
Сообщ.
#2
,
|
|
|
1) у сделанного WinRAR'ом SFX'а есть параметр "в какую папту распаковываться" (думаю, что у всех остальных SFX'ов такой параметр тоже есть)
2) в MSI есьть таблица Registry и туда можно заносить много всего, в том числе и высчитываемые в процессе инстоляции пути. Так что MSI'ем эта проблема решается на раз. |
Сообщ.
#3
,
|
|
|
Fester спасибо, буду мучить,но по первому пункту наверн не совсем прально выразился )
мне надо чтоб инсталлер распаковывал SFX архив в заданную в инсталлере же папку нашёл програмку Advanced Installer 4.9.2 вроде всё в ней хорошо, даж нашёл как в реестр добавлять инфу, но про архивы чтот ничего |
Сообщ.
#4
,
|
|
|
Сделай CustomAction, кототый будет считывать имя папки и запускать SFX с нужными параметрами.
Надеюсь это только распаковка? Без инстоляции? Т.к. в один момент времени может работать только одна deferred фаза. Другими словами, система может обновляться только одним инсталлером в один момент времени. |
Сообщ.
#5
,
|
|
|
Fester
а подскажи мне плиз последнюю фигню, если конечно знаком с прогой Advanced Installer она сама умеет сжимать файлы методом LZMA и всёб ничего, но созданный инсталл сначала распаковывает всё во временную папку, а уж потом ставит... мне инсталлы нужны в основном для прикручивания к ним архивов по многу гигабайт...и временная папка - это УЖАСНО !! можешь помочь ?? |
Сообщ.
#6
,
|
|
|
Цитата RIP @ если конечно знаком с прогой Advanced Installer Не знаком Цитата RIP @ но созданный инсталл сначала распаковывает всё во временную папку, а уж потом ставит... Ну правильно, а откуда ему еще ставить? Цитата RIP @ мне инсталлы нужны в основном для прикручивания к ним архивов по многу гигабайт переведи |
Сообщ.
#7
,
|
|
|
Fester
мне над короч, чтоб архив 7-zip рядом валялся и инсталл, никуда его не трогая, извлекал из него файлы в заданную в инстале директорию |
Сообщ.
#8
,
|
|
|
Сделай CustomAction, которая распаковывает твой архив туда, куда тебе неда.
При этом инстоляшка не должна ничего знать о существовании архива. Таким образом, в момент вызова CustomAction ты будешь знать где лежит нужный тебе архив. CustomAction должна быть вызвана после CostFinalize - таким образом все пути и переменные инсталлера уже будут инициализированы и ты сможешь получить название конечной директории. Ну а запустить распаковку - это уже CreateProcess с нужной командной строкой. |
Сообщ.
#9
,
|
|
|
Fester спасибо
буду разбираться а на примере какой проги ты это описываешь ? |
Сообщ.
#10
,
|
|
|
Ээээ, ну у нас тут своя прога
Вобщем это на онове pure MSI. |
Сообщ.
#11
,
|
|
|
Fester
так конечно сложнее сотворить... нужно задать в CustomActions экшн, который будет давать комману на распаковку архива...над ток найти где ) и, как я понял, чтоб оно работало, нужно чтоб на конечном компьютере (в моём случае - любом) должен быть установлен рар...так ? Добавлено и как задать архиву - что нужно распаковываться в папку которая была указана в инсталле ?? |
Сообщ.
#12
,
|
|
|
Цитата RIP @ так конечно сложнее сотворить... Ничего сложного 1) Возьми какую-нибудь программу... ну например InstallShield (думаю, что там можно вставлять CustomAction'ы) 2) Напиши простенькую dll с CustomAction'ами (тебе только один кастом экшн нужен) 3) Засунь длл в пакет 4) Установи свой CustomAction после CostFinalize (это в таблице InstallExecuteSequence) фсе Цитата RIP @ должен быть установлен рар Зачем? У тебя же SFX архив |
Сообщ.
#13
,
|
|
|
Fester
ты сейчас общаешься с нубом ) напиши простенькую длл это ты хорошо сказал ) Добавлено тем более я не нашёл там экшна на распаковку архива |
Сообщ.
#14
,
|
|
|
Цитата RIP @ и как задать архиву - что нужно распаковываться в папку которая была указана в инсталле ?? В зависимости от папки, если это destination path (+ какие-то поддиректории), то эту destination path ты можешь функцией MsiGetTargetPath (приклеить слэши итд ты, я думаю сам сможешь ) Директорию, откуда стартовал msi можно получить функцией MsiGetSourcePath. Добавлено Цитата RIP @ тем более я не нашёл там экшна на распаковку архива Так и не найдешь Это же CustomAction Т.е. ты делаешь dll с экспортируемыми функциями и потом говоришь MSI'ю какие функции из твоей длл и в каком порядке надо вызывать |
Сообщ.
#15
,
|
|
|
не в курсе - какую комманду приписать к sfx архиву чтоб он распаковался в нужную директорию ???
я надеюсь, это был последний вопрос а то я уже наглею похоже |
Сообщ.
#16
,
|
|
|
Цитата RIP @ не в курсе - какую комманду приписать к sfx архиву чтоб он распаковался в нужную директорию ??? У нас это смотрится так: в поле с коментариями к sfx архиву написано просто "Path=%temp%\имя_директории" Так что я бы сказал строка должнабыть такой: путь_к_твоему_sfx_архиву.exe path="куда_распаковывать" Цитата RIP @ а то я уже наглею похоже все ок |
Сообщ.
#17
,
|
|
|
а не знаешь, нельзя задать в .reg файле чтоб он прописывал в реестр инфу о ПАПКЕ В КОТОРОЙ ЛЕЖИТ ??
я просто не нашёл в нете просто тогда мне не придёться тут геморствовать с инсталлом |
Сообщ.
#18
,
|
|
|
В MSI есть таблица registry, туда можно все регистри записать.
Я не могу себе представить, чтобы какой-либо из существующих покетов для создания инсталеров не поддерживал бы записи реестра. (это даже Visual Studio умеет делать ) |
Сообщ.
#19
,
|
|
|
нененене ты мя не понял ) чтоб вобще без инсталлера РЕГ файлик
|
Сообщ.
#20
,
|
|
|
эээ... не представляю себе о чем ты
|
Сообщ.
#21
,
|
|
|
Fester
вобщем я затеял прогу инсталлер только для того чтоб она распаковывала архив 7-zip и заносила инфу в реестр просто рег-файлы вроде прописывают КОНКРЕТНО типа: [HKEY_LOCAL_MACHINE\SOFTWARE\Название фирмы\Название продукта] @="D:\\programs\\Название\\123.exe" а мне надо чтоб путь был не конкретным, а тем куда распакован архив... [HKEY_LOCAL_MACHINE\SOFTWARE\Название фирмы\Название продукта] @="КУДА РАСПАКОВАЛ\\Название\\123.exe" |
Сообщ.
#22
,
|
|
|
Ну если только ты напишешь прогу, которая будет писать регистри и сразу после распаковки sfx архива ты будешь эту прогу запускать. Уже из целевой директории.
Но это ИМХО изврат Инсталлер-то ты все равно делать будешь... а заполнить таблицу Registry - плевое дело |
Сообщ.
#23
,
|
|
|
1) Создаешь визардом dll.
2) определяешь в ней функцию extern "C" __declspec(dllexport) int MyFirstCustomAction (MSIHANDLE hInstall) { // ну и тут все определяешь } если завтра до работы доберусь, то напишу код подробнее. |
Сообщ.
#24
,
|
|
|
Fester
ну да, желательно поподробнее |
Сообщ.
#25
,
|
|
|
Сори, но до работы я добересь только 25-ого...
|
Сообщ.
#26
,
|
|
|
Fester
ну, если не сложно то после 25 ) мне не к спеху |
Сообщ.
#27
,
|
|
|
Так, перечитал... посмотрел длл с кодом... и не увидил, что тут еще подробнее расписывать?
Длл, я думаю, ты создать сможешь Экспортируемые функции тоже есть. Тебе надо только наполнить эти экшены своим кодом... |