Winrar sfx создание ярлыка
Нередко при работе над автоматической установкой приложений возникает необходимость создать бесключевой самораспаковывающийся архив (в дальнейшем я буду использовать "SFX", так короче). Как правило, SFX архивы позволяют значительно сэкономить место на CD. Например, если приложение не требует установки, то его можно поместить в $OEM$\Progs и оно будет автоматически скопировано в Program Files. Однако, аналогичной цели можно достичь запаковав приложение в SFX, который распакует содержимое в нужную папку.
Область применения SFX не ограничивается приложениями, не требующими установки. Можно без проблем упаковать приложение, запакованное одним из распространенных инсталляторов и сконфигурировать SFX таким образом, что после распаковки будет запущена установка приложения с нужными ключами. Еще одним преимуществом SFX архивов является то, что в некоторых случаях они дают возможность не просто автоматизировать, но и полностью скрыть процесс и прогресс инсталляции от конечного пользователя. Для примера рассматривается упаковка Adobe Reader 7.0. Несмотря на то, что с относительно недавних пор приложение можно устанавливать с соответствующими ключами без особых проблем, только SFX позволяет установить приложение абсолютно незаметно.
Подготовка к созданию SFX
Вне зависимости от того, что вы будете использовать для создания SFX, различий в подготовке не будет. Если вы просто хотите запаковать папку с файлами, то никакой подготовки не требуется. А вот приложения иногда приходится распаковывать. В случае с Adobe Reader 7 используется Install Shield с Basic MSI, причем все это еще и запаковано в некий FEAD Optimizer. Надо запустить исполняемый файл Adobe, дождаться пока FEAD Optimizer закончит распаковку и найти папку с файлом Adobe Reader 7.0.msi (она может быть в %ProgramFiles%\Adobe, например). Теперь нужно запустить файл setup.exe с ключом /a для создания административной установки. В появившемся диалоговом окне нужно указать папку, в которой по окончании будут находиться все нужные нам файлы. Теперь можно переименовать Adobe Reader 7.0.msi в, скажем, Adobe7.msi и приступать к упаковке в SFX архив. Мы рассмотрим создание SFX архивов при помощи
SFX Creator
Программа написана специально для решения задач по созданию полноценного SFX архива и обладает большими возможностями для создания бесключевых SFX. С ее помощью можно создать как незаметный (silent) инсталлятор, так и инсталлятор с графическим интерфейсом.
Как правильно сделать, чтобы создаваемый ярлык на запуск программы имел нужную "рабочую папку"?
Например, исполняемый файл будет находится "C:\Program Files\Folder\File.exe".
Задаем создание ярлыка на декстопе, но получаем в результате ярлык с пустой графой "Рабочая папка", а нужно "C:\Program Files\Folder\".
Второй вопрос по теме. Как сделать если исполняемый файл лежит в подпапке, а запуск нужно из родительской? Например "C:\Program Files\Folder\Bin\File.exe" -> "C:\Program Files\Folder\".
Вопрос снимается. В версии 4.00 (англ. ) был кривой sfx-модуль. Заменив его на более старый из версии 3.90, получил желаемый результат.
Даже не знаю как тебе проще объяснить, WinRAR прекрасно поймёт для какого файла создавать ярлык и для этого не надо указывать полный путь к файлу.
Смотри: Я архивирую папку Prog в папке есть исполняемый файл prog.exe и для него надо ярлык создать, в поле "Имя файла, для которого будет создан ярлык" (в WinRAR) я не буду писать C:\Program files\prog\prog.exe, а просто напишу prog\prog.exe и он это поймёт, таким образом можно будет перед распаковкой даже сменить расположение на диск C:\ к примеру, ярлык будет создан верно.
Если папок нет вообще, а файл сразу в архиве то в поле пишем просто prog.exe
Да, спасибо. Насколько я понимаю, это называется относительный путь. Но вы ответили на второй вопрос. А что насчет рабочей папки в ярлыке?
Читальный зал Гений (57286) Путь рабочий папки должен быть создан автоматически, после создания ярлыка программой. А второй вопрос: зачем запускать файл из другой папки? - можно создать bat файл, где пропишешь 1 строку Bin\File.exe и поместишь его в Folder не используй в названии и путях кириллицу, а то не сработает.
В графу "Рабочая папка" вписываешь C:\Program Files\Folder\
Потом создаёшь bat-файл на запуск программы C:\Program Files\Folder\Bin\File.exe и помещаешь его в нужную папку.
Только при чём тут WinRAR и самораспаковывающийся архив?
Loony Искусственный Интеллект (551249) Ну, так бы и написал. Всё это прописывается при создании архива. Запускай WinRAR, жми F1 и читай разделы "Самораспаковывающиеся архивы (SFX)" и "SFX-модули GUI: команды создания инсталляторов" там всё расписано.
не могу сделать так чтобы выводился ярлык .ехе файла на заранее указанное место, например на рабочий стол.
если кто знает, прошу объяснить подробно как это можно сделать.
разобрался сам.
вот если кому то вдруг пригодиться:
или %ProgramFiles%
пример: %ProgramFiles%\7-Zip
переменная определяет место системного диска. это больше для тех у кого система стоит не на диске C:
fatal, поправочка.
В первой строке "имя файла" лучше указывать не абсолютный, а относительный путь. Также и путь установки, есть же пункт "папка Program Files", зачем его же прописывать вручную? Возможно вы упаковали архив одной папкой внутри, но лучше извлечь файлы из нее, и прописать просто имя новой папки в строке "путь" (Shtirlitz IV) и поставить пункт Program Files. Тогда в ярлыке тоже можно указать относительный путь, а именно Shtirlitz.exe.
спасибо чувак разберался целый месяц лазил по всяким сайтам бесполезно((( наткнулся на твою статью спасибо реально работает низкий паклон от моих спуших мазгов
Не надеюсь что помогут. но всё же, как добавить на рабочий стол или Все программы я разобрался, а вот как добавить ярлык для программки в
c:\ProgramData\Microsoft\Windows\Start Menu\Programs\ НАЗВАНИЕ ПРОГРАММЫ\
никак не пойму
буду благодарен за совет
После создания простого SFX архива, зайти в него (находясь в оболочке WinRar) сначала в Информацию, а затем в Комментарий и там прописать:
(на примере установки портабельной версии браузера Maxthon на флешку)
Path="X:\Portable Maxthon"
; путь установки программы
;если его не задать, то перед разархивацией будет задан вопрос Куда разархивировать и ключ Shortcut будет бесполезен
;т.к. он задает свои параметры четко и жестко и отработан будет неверно и не корректно
Silent=2
; отображать ход распаковки, если задать 1 вместо 2, то распаковка будет полностью скрытой
Overwrite=1
; перезаписывать все файлы, если они уже есть
Shortcut=D,"X:\Portable Maxthon\Bin\Maxthon.exe", ,"X:\Portable Maxthon\Bin", "Portable Maxthon", "X:\Portable Maxthon\Bin\Maxthon_logo.ico"
;создание указателя на иконку и запуск программы
;первый параметр - указание на сам экзешник программы
;второй - основная папка программы (очень редко, но иногда отличается от папки, где лежит программа)
;третий - название самой программы на рабочем столе
;четвертый аргумент чаще всего пропускается, если иконка самой программы устраивает
; если иконка другая (своя или лучше), то прописывается файл иконки
;ВАЖНО! Все пути и аргументы пишутся в кавычках. Типа вот так - "аргумент". Любой ключ может быть пропущен, а пустой аргумент ключа - заменен запятой
; точка с запятой - знак комментария.
Вот описание параметров SFX-команды: Shortcut
Эта команда создаёт ярлык для извлечённого из архива файла.
Тип — это односимвольное поле, которое может принимать следующие значения:
D Создать ярлык на Рабочем столе
S Создать ярлык в меню кнопки "Пуск"
P Создать ярлык в меню "Пуск/Программы"
T Создать ярлык в папке "Автозагрузка"
Примечание: Ярлыки создаются ДЛЯ ВСЕХ пользователей. Для того, чтобы создать ярлык только для текущего пользователя, к указанным символам надо добавить u
Например - Du, Su, Pu, Tu,
ИсхФайл — имя извлекаемого из архива файла, для которого нужно создать ярлык.
РезПапка — папка, в которой нужно создать ярлык; если указанная папка не существует, то она будет создана SFX-архивом.
Описание — текстовая строка с описанием ярлыка (можно пропустить - поставить запятую).
ИмяЯрлыка — имя файла (Ваше название программы) .lnk (ярлыка) , создаваемого SFX-архивом.
ЗначокЯрлыка — имя файла со значком, ассоциированного с ярлыком. Если этот параметр пропущен, то будет использоваться стандартный значок. Если имя файла со значком не содержит полного пути, SFX-архив будет искать файл значка в папке с извлечёнными файлами.
К программам, скопированным при помощи $OEM$ папок, нередко приходится создавать ярлыки из командной строки. Кроме того, в некоторых случаях нужно создать ярлык с определенными параметрами для запуска программы. Для создания ярлыков существуют различные способы.
AutoIt
Создание ярлыков можно легко реализовать скриптом на AutoIt (v.3). Прилагаю вариант скрипта, который по сути лишь оболочка над командой FileCreateShortcut. Осталось скомпилировать EXE-файл и вперед.
Список ключей, в основном, получен из справки к AutoIt:
/f Full path and file name of file to create shortcut to.
/l Full path and file name of the shortcut.
/w Working directory. [optional]
/a Additional file arguments. [optional]
/d File Description. [optional]
/i Full Path/File name of icon to use. [optional]
shortcut.exe /f:"%ProgramFiles%\Ahead\Nero\nero.exe" /a:"/w" /l:"%ALLUSERSPROFILE%\Desktop\Nero Express"
Самораспаковывающийся (SFX) архив
Если установка приложения ведется из SFX архива, можно задействовать возможности архиватора для создания ярлыков.
WinRar
SFX-модуль архиватора WinRAR обладает широкими возможностями для создания ярлыков. Программа добавляется в архив и создается сценарий распаковки, включающий в себя команды для создания ярлыков. Пример комментария к SFX-архиву (спасибо, voler):
;Расположенный ниже комментарий содержит команды SFX-сценария
Path=%systemdrive%\Program Files\AIMP\
SavePath
Silent=1
Overwrite=1
Shortcut=D, "cAIMP.exe", "", "Аналог winamp", "AIMP.lnk"
Shortcut=P, "cAIMP.exe", "", "Аналог winamp", "AIMP.lnk"
- Silent=1 - включен тихий режим
- Overwrite=1 - включена перезапись существующих файлов
- Shortcut=D - ярлык для рабочего стола
- Shortcut=P - ярлык для Меню пуск
SFX-модуль архиватора 7-Zip не умеет создавать ярлыки, но есть замечательный модифицированный модуль, который легко справляется с этой задачей. Все подробно расписано в справке модуля, где также имеется пример, включающий создание ярлыков.
Нередко при работе над автоматической установкой приложений возникает необходимость создать бесключевой самораспаковывающийся архив (в дальнейшем я буду использовать "SFX", так короче). Как правило, SFX архивы позволяют значительно сэкономить место на CD. Например, если приложение не требует установки, то его можно поместить в $OEM$\Progs и оно будет автоматически скопировано в Program Files. Однако, аналогичной цели можно достичь запаковав приложение в SFX, который распакует содержимое в нужную папку.
Область применения SFX не ограничивается приложениями, не требующими установки. Можно без проблем упаковать приложение, запакованное одним из распространенных инсталляторов и сконфигурировать SFX таким образом, что после распаковки будет запущена установка приложения с нужными ключами. Еще одним преимуществом SFX архивов является то, что в некоторых случаях они дают возможность не просто автоматизировать, но и полностью скрыть процесс и прогресс инсталляции от конечного пользователя. Для примера рассматривается упаковка Adobe Reader 7.0. Несмотря на то, что с относительно недавних пор приложение можно устанавливать с соответствующими ключами без особых проблем, только SFX позволяет установить приложение абсолютно незаметно.
Подготовка к созданию SFX
Вне зависимости от того, что вы будете использовать для создания SFX, различий в подготовке не будет. Если вы просто хотите запаковать папку с файлами, то никакой подготовки не требуется. А вот приложения иногда приходится распаковывать. В случае с Adobe Reader 7 используется Install Shield с Basic MSI, причем все это еще и запаковано в некий FEAD Optimizer. Надо запустить исполняемый файл Adobe, дождаться пока FEAD Optimizer закончит распаковку и найти папку с файлом Adobe Reader 7.0.msi (она может быть в %ProgramFiles%\Adobe, например). Теперь нужно запустить файл setup.exe с ключом /a для создания административной установки. В появившемся диалоговом окне нужно указать папку, в которой по окончании будут находиться все нужные нам файлы. Теперь можно переименовать Adobe Reader 7.0.msi в, скажем, Adobe7.msi и приступать к упаковке в SFX архив. Мы рассмотрим создание SFX архивов при помощи
VBScript
Пример сценариев VBScript для создания ярлыков
Вариант 1 (спасибо, Diamond)
Вариант 2, универсальный (спасибо, deepred)
Использование скрипта, сохраненного, например, с именем MKLink.vbs:
Утилита NirCmd
Утилита NirCmd поможет создать ярлык. Команда
nircmd.exe shortcut "%ProgramFiles%\Mozilla Thunderbird\thunderbird.exe" "~$folder.desktop$" "Home" "-p Home"
Создает ярлык к Thunderbird на рабочем столе с именем Home, программа будет запущена с профилем Home ( -p Home является параметром запуска исполняемого файла).
С помощью Nircmd можно проделать очень много операций, список которых не ограничивается домашней страницей. В CHM справке все описано подробно.
WinRAR
WinRAR - не нуждающийся в представлении архиватор. Он обладает широкими возможностями для создания бесключевых SFX. С его помощью можно создать незаметный (silent) инсталлятор, который распакует содержимое SFX в заданную папку, выполнит заранее указанную команду, а по окончании установки может удалить распакованные файлы. Помимо всего WinRAR умеет добавлять элементы в меню Пуск, помещать ярлыки на Рабочий стол, а также задавать архиву иконку по вашему выбору. Я рассмотрю только базовые возможности программы, а с остальными вы без труда разберетесь при помощи справки.
Итак, запустив архиватор, мы переходим в папку, в которой находится административная установка Adobe. Выделяем все файлы
и жмем Добавить
Именуем архив по желанию, отмечаем создание SFX и выбираем максимальный уровень сжатия. Теперь надо сконфигурировать параметры SFX. Для этого на вкладке Дополнительно жмем Параметры SFX.
На вкладке Общие указываем команду для распаковки
и переходим на вкладку Режимы:
Здесь мы указываем распаковку во временную папку (что повлечет за собой автоматическое удаление распакованных файлов по окончании установки), скрытый режим и перезапись всех файлов.
Перейдя на вкладку Комментарий, мы видим все параметры, которые только что сконфигурировали через графический интерфейс. В принципе, можно было сразу перейти на эту вкладку и напечатать комментарий вручную или загрузить из заранее подготовленного текстового файла.
Примечание Поскольку мы запаковываем приложение, имеющее собственный инсталлятор, то распаковка во временную папку вполне оправдана (параметр TempMode). Если же вы просто хотите распаковать файлы в нужную вам папку, то на вкладке Общие нужно указать путь (можно использовать системные переменные), и соответственно, не использовать TempMode.
Вот и все. Теперь осталось нажать ОК пару раз и спустя некоторое время у нас будет SFX, который совершенно незаметно установит Acrobat Reader.
Преимущества: абсолютно незаметная (silent) установка, возможность распаковки файлов в заданную папку, возможность добавления элементов в меню Пуск и ярлыков на рабочий стол, выбор иконки для архива.
Недостатки: стоит $30.
7-Zip - бесплатный архиватор, распространяющийся по лицензии GNU LGPL. Если вы с ним не знакомы, то более подробную информацию вы найдете на сайте 7-Zip. С его помощью можно создавать бесключевые SFX, хотя процесс их создания несколько длиннее, чем у WinRAR.
Для начала нужно запаковать содержимое нашей папке в 7-Zip архив. Сделать это можно через 7-Zip файл-менеджер. Запустив его, мы переходим в папку, в которой находится административная установка Adobe. В эту же папку нужно положить файл StartX.exe (его назначение я объясню ниже). Выделяем все файлы
и жмем Добавить
Именуем архив по желанию (скажем, Adobe7.7z), выбираем формат 7-Zip, максимальный уровень сжатия и жмем ОК. На выходе получаем файл Adobe7.7z, из которого нам предстоит сделать SFX.
Теперь нужно создать конфигурационный файл для SFX. Его можно сделать в Блокноте. Единственное, но обязательное условие - он должен быть в кодировке UTF-8. В нашем случае он будет выглядеть так:
Выглядит сложно, но сейчас все прояснится. Первая и последние строки просто обозначают начало и конец конфигурационного файла. Средняя строка - команда, которая будет выполнена после распаковки архива. Непосредственно команда заключается в кавычки и помещается после RunProgram=. Утилита StartX.exe является эквивалентом консольной команды START и поддерживает такие же ключи. Ее наличие необходимо для установки MSI пакета, извлеченного из 7-Zip SFX. Если попытаться сделать нечто вроде RunProgram="Adobe7.msi /qn", то запуск завершится ошибкой. Два обратных слэша (\) просто предваряют кавычки, находящиеся внутри команды.
Сохраняем конфигурационный файл с именем config.txt в ту же папку, где Adobe7.7z, и переходим к завершающей стадии создания SFX.
Из инсталляционной папки 7-Zip нужно взять SFX модуль 7zS.sfx и скопировать его к файлам Adobe7.7z и config.txt. Можно сжать модуль утилитой UPX. Это уменьшит размер модуля примерно со 131 кб до 58 кб. Делается это командой
Достаточно это сделать один раз, и можно использовать сжатый модуль в дальнейшем.
Примечание . Примите к сведению, что некоторые антивирусные программы ошибочно воспринимают SFX модуль, сжатый при помощи UPX, как вирус. Если вам нужно гарантировать успешную распаковку SFX архива в любых условиях, не сжимайте модуль при помощи UPX.
Теперь, когда в одной папке собраны все три файла (adobe7.7z, config.txt и 7zS.sfx), нужно из командной строки выполнить следующую команду
Через мгновение в папке появится файл adobe7.exe. Это и есть наш SFX. Его запуск инициализирует распаковку архива во временную папку, запуск команды из конфигурационного файла, и удаление распакованных файлов по окончании установки.
Модифицированный SFX модуль для 7-Zip
Оригинальный 7-Zip SFX модуль не дает возможности сделать распаковку абсолютно незаметной. В процессе распаковки пользователь видит вот такое диалоговое окно
и даже может прервать установку нажатием на кнопку Cancel. Этой проблемы можно избежать, воспользовавшись SFX модулем, который модифицировал участник конференции OSZone Олег Щербаков aka Oleg_Sch. Вы можете загрузить модифицированный модуль со страницы автора, где вы также найдете справку и исходный код. В справке описаны все новые функции и примеры использования (там много интересного). Так что на этой странице я ограничусь лишь примером конфигурационного файла, который полностью скроет диалоговое окно распаковки.
;!@Install@!UTF-8!
RunProgram="StartX.exe /WAIT \"msiexec /i Adobe7.msi /qn\""
GUIMode="2"
;!@InstallEnd@!
Вообще-то, для модифицированного модуля утилита StartX не нужна, и можно было бы обойтись RunProgram="Adobe7.msi /qn" .
Любопытно, что в данном случае 7-Zip продемонстрировал лучшее сжатие, чем WinRAR. Размер 7-Zip SFX (даже с утилитой StartX.exe) оказался 20893 кб против 23825 кб у WinRAR SFX. Oднако, недостатком родного SFX модуля 7-Zip является невозможность сконфигурировать бесключевую распаковку SFX в заданную папку. Модифицированный модуль Олега, позволяет указать папку распаковки в конфигурационном файле и избавляет 7-Zip от данного недостатка.
WinRAR
WinRAR - не нуждающийся в представлении архиватор. Он обладает широкими возможностями для создания бесключевых SFX. С его помощью можно создать незаметный (silent) инсталлятор, который распакует содержимое SFX в заданную папку, выполнит заранее указанную команду, а по окончании установки может удалить распакованные файлы. Помимо всего WinRAR умеет добавлять элементы в меню Пуск, помещать ярлыки на Рабочий стол, а также задавать архиву иконку по вашему выбору. Я рассмотрю только базовые возможности программы, а с остальными вы без труда разберетесь при помощи справки.
Итак, запустив архиватор, мы переходим в папку, в которой находится административная установка Adobe. Выделяем все файлы
и жмем Добавить
Именуем архив по желанию, отмечаем создание SFX и выбираем максимальный уровень сжатия. Теперь надо сконфигурировать параметры SFX. Для этого на вкладке Дополнительно жмем Параметры SFX.
На вкладке Общие указываем команду для распаковки
и переходим на вкладку Режимы:
Здесь мы указываем распаковку во временную папку (что повлечет за собой автоматическое удаление распакованных файлов по окончании установки), скрытый режим и перезапись всех файлов.
Перейдя на вкладку Комментарий, мы видим все параметры, которые только что сконфигурировали через графический интерфейс. В принципе, можно было сразу перейти на эту вкладку и напечатать комментарий вручную или загрузить из заранее подготовленного текстового файла.
Примечание Поскольку мы запаковываем приложение, имеющее собственный инсталлятор, то распаковка во временную папку вполне оправдана (параметр TempMode). Если же вы просто хотите распаковать файлы в нужную вам папку, то на вкладке Общие нужно указать путь (можно использовать системные переменные), и соответственно, не использовать TempMode.
Вот и все. Теперь осталось нажать ОК пару раз и спустя некоторое время у нас будет SFX, который совершенно незаметно установит Acrobat Reader.
Преимущества: абсолютно незаметная (silent) установка, возможность распаковки файлов в заданную папку, возможность добавления элементов в меню Пуск и ярлыков на рабочий стол, выбор иконки для архива.
Недостатки: стоит $30.
7-Zip - бесплатный архиватор, распространяющийся по лицензии GNU LGPL. Если вы с ним не знакомы, то более подробную информацию вы найдете на сайте 7-Zip. С его помощью можно создавать бесключевые SFX, хотя процесс их создания несколько длиннее, чем у WinRAR.
Для начала нужно запаковать содержимое нашей папке в 7-Zip архив. Сделать это можно через 7-Zip файл-менеджер. Запустив его, мы переходим в папку, в которой находится административная установка Adobe. В эту же папку нужно положить файл StartX.exe (его назначение я объясню ниже). Выделяем все файлы
и жмем Добавить
Именуем архив по желанию (скажем, Adobe7.7z), выбираем формат 7-Zip, максимальный уровень сжатия и жмем ОК. На выходе получаем файл Adobe7.7z, из которого нам предстоит сделать SFX.
Теперь нужно создать конфигурационный файл для SFX. Его можно сделать в Блокноте. Единственное, но обязательное условие - он должен быть в кодировке UTF-8. В нашем случае он будет выглядеть так:
Выглядит сложно, но сейчас все прояснится. Первая и последние строки просто обозначают начало и конец конфигурационного файла. Средняя строка - команда, которая будет выполнена после распаковки архива. Непосредственно команда заключается в кавычки и помещается после RunProgram=. Утилита StartX.exe является эквивалентом консольной команды START и поддерживает такие же ключи. Ее наличие необходимо для установки MSI пакета, извлеченного из 7-Zip SFX. Если попытаться сделать нечто вроде RunProgram="Adobe7.msi /qn", то запуск завершится ошибкой. Два обратных слэша (\) просто предваряют кавычки, находящиеся внутри команды.
Сохраняем конфигурационный файл с именем config.txt в ту же папку, где Adobe7.7z, и переходим к завершающей стадии создания SFX.
Из инсталляционной папки 7-Zip нужно взять SFX модуль 7zS.sfx и скопировать его к файлам Adobe7.7z и config.txt. Можно сжать модуль утилитой UPX. Это уменьшит размер модуля примерно со 131 кб до 58 кб. Делается это командой
Достаточно это сделать один раз, и можно использовать сжатый модуль в дальнейшем.
Примечание . Примите к сведению, что некоторые антивирусные программы ошибочно воспринимают SFX модуль, сжатый при помощи UPX, как вирус. Если вам нужно гарантировать успешную распаковку SFX архива в любых условиях, не сжимайте модуль при помощи UPX.
Теперь, когда в одной папке собраны все три файла (adobe7.7z, config.txt и 7zS.sfx), нужно из командной строки выполнить следующую команду
Через мгновение в папке появится файл adobe7.exe. Это и есть наш SFX. Его запуск инициализирует распаковку архива во временную папку, запуск команды из конфигурационного файла, и удаление распакованных файлов по окончании установки.
Модифицированный SFX модуль для 7-Zip
Оригинальный 7-Zip SFX модуль не дает возможности сделать распаковку абсолютно незаметной. В процессе распаковки пользователь видит вот такое диалоговое окно
и даже может прервать установку нажатием на кнопку Cancel. Этой проблемы можно избежать, воспользовавшись SFX модулем, который модифицировал участник конференции OSZone Олег Щербаков aka Oleg_Sch. Вы можете загрузить модифицированный модуль со страницы автора, где вы также найдете справку и исходный код. В справке описаны все новые функции и примеры использования (там много интересного). Так что на этой странице я ограничусь лишь примером конфигурационного файла, который полностью скроет диалоговое окно распаковки.
;!@Install@!UTF-8!
RunProgram="StartX.exe /WAIT \"msiexec /i Adobe7.msi /qn\""
GUIMode="2"
;!@InstallEnd@!
Вообще-то, для модифицированного модуля утилита StartX не нужна, и можно было бы обойтись RunProgram="Adobe7.msi /qn" .
Любопытно, что в данном случае 7-Zip продемонстрировал лучшее сжатие, чем WinRAR. Размер 7-Zip SFX (даже с утилитой StartX.exe) оказался 20893 кб против 23825 кб у WinRAR SFX. Oднако, недостатком родного SFX модуля 7-Zip является невозможность сконфигурировать бесключевую распаковку SFX в заданную папку. Модифицированный модуль Олега, позволяет указать папку распаковки в конфигурационном файле и избавляет 7-Zip от данного недостатка.
WinRAR
WinRAR - не нуждающийся в представлении архиватор. Он обладает широкими возможностями для создания бесключевых SFX. С его помощью можно создать незаметный (silent) инсталлятор, который распакует содержимое SFX в заданную папку, выполнит заранее указанную команду, а по окончании установки может удалить распакованные файлы. Помимо всего WinRAR умеет добавлять элементы в меню Пуск, помещать ярлыки на Рабочий стол, а также задавать архиву иконку по вашему выбору. Я рассмотрю только базовые возможности программы, а с остальными вы без труда разберетесь при помощи справки.
Итак, запустив архиватор, мы переходим в папку, в которой находится административная установка Adobe. Выделяем все файлы
и жмем Добавить
Именуем архив по желанию, отмечаем создание SFX и выбираем максимальный уровень сжатия. Теперь надо сконфигурировать параметры SFX. Для этого на вкладке Дополнительно жмем Параметры SFX.
На вкладке Общие указываем команду для распаковки
и переходим на вкладку Режимы:
Здесь мы указываем распаковку во временную папку (что повлечет за собой автоматическое удаление распакованных файлов по окончании установки), скрытый режим и перезапись всех файлов.
Перейдя на вкладку Комментарий, мы видим все параметры, которые только что сконфигурировали через графический интерфейс. В принципе, можно было сразу перейти на эту вкладку и напечатать комментарий вручную или загрузить из заранее подготовленного текстового файла.
Примечание Поскольку мы запаковываем приложение, имеющее собственный инсталлятор, то распаковка во временную папку вполне оправдана (параметр TempMode). Если же вы просто хотите распаковать файлы в нужную вам папку, то на вкладке Общие нужно указать путь (можно использовать системные переменные), и соответственно, не использовать TempMode.
Вот и все. Теперь осталось нажать ОК пару раз и спустя некоторое время у нас будет SFX, который совершенно незаметно установит Acrobat Reader.
Преимущества: абсолютно незаметная (silent) установка, возможность распаковки файлов в заданную папку, возможность добавления элементов в меню Пуск и ярлыков на рабочий стол, выбор иконки для архива.
Недостатки: стоит $30.
7-Zip - бесплатный архиватор, распространяющийся по лицензии GNU LGPL. Если вы с ним не знакомы, то более подробную информацию вы найдете на сайте 7-Zip. С его помощью можно создавать бесключевые SFX, хотя процесс их создания несколько длиннее, чем у WinRAR.
Для начала нужно запаковать содержимое нашей папке в 7-Zip архив. Сделать это можно через 7-Zip файл-менеджер. Запустив его, мы переходим в папку, в которой находится административная установка Adobe. В эту же папку нужно положить файл StartX.exe (его назначение я объясню ниже). Выделяем все файлы
и жмем Добавить
Именуем архив по желанию (скажем, Adobe7.7z), выбираем формат 7-Zip, максимальный уровень сжатия и жмем ОК. На выходе получаем файл Adobe7.7z, из которого нам предстоит сделать SFX.
Теперь нужно создать конфигурационный файл для SFX. Его можно сделать в Блокноте. Единственное, но обязательное условие - он должен быть в кодировке UTF-8. В нашем случае он будет выглядеть так:
Выглядит сложно, но сейчас все прояснится. Первая и последние строки просто обозначают начало и конец конфигурационного файла. Средняя строка - команда, которая будет выполнена после распаковки архива. Непосредственно команда заключается в кавычки и помещается после RunProgram=. Утилита StartX.exe является эквивалентом консольной команды START и поддерживает такие же ключи. Ее наличие необходимо для установки MSI пакета, извлеченного из 7-Zip SFX. Если попытаться сделать нечто вроде RunProgram="Adobe7.msi /qn", то запуск завершится ошибкой. Два обратных слэша (\) просто предваряют кавычки, находящиеся внутри команды.
Сохраняем конфигурационный файл с именем config.txt в ту же папку, где Adobe7.7z, и переходим к завершающей стадии создания SFX.
Из инсталляционной папки 7-Zip нужно взять SFX модуль 7zS.sfx и скопировать его к файлам Adobe7.7z и config.txt. Можно сжать модуль утилитой UPX. Это уменьшит размер модуля примерно со 131 кб до 58 кб. Делается это командой
Достаточно это сделать один раз, и можно использовать сжатый модуль в дальнейшем.
Примечание . Примите к сведению, что некоторые антивирусные программы ошибочно воспринимают SFX модуль, сжатый при помощи UPX, как вирус. Если вам нужно гарантировать успешную распаковку SFX архива в любых условиях, не сжимайте модуль при помощи UPX.
Теперь, когда в одной папке собраны все три файла (adobe7.7z, config.txt и 7zS.sfx), нужно из командной строки выполнить следующую команду
Через мгновение в папке появится файл adobe7.exe. Это и есть наш SFX. Его запуск инициализирует распаковку архива во временную папку, запуск команды из конфигурационного файла, и удаление распакованных файлов по окончании установки.
Модифицированный SFX модуль для 7-Zip
Оригинальный 7-Zip SFX модуль не дает возможности сделать распаковку абсолютно незаметной. В процессе распаковки пользователь видит вот такое диалоговое окно
и даже может прервать установку нажатием на кнопку Cancel. Этой проблемы можно избежать, воспользовавшись SFX модулем, который модифицировал участник конференции OSZone Олег Щербаков aka Oleg_Sch. Вы можете загрузить модифицированный модуль со страницы автора, где вы также найдете справку и исходный код. В справке описаны все новые функции и примеры использования (там много интересного). Так что на этой странице я ограничусь лишь примером конфигурационного файла, который полностью скроет диалоговое окно распаковки.
;!@Install@!UTF-8!
RunProgram="StartX.exe /WAIT \"msiexec /i Adobe7.msi /qn\""
GUIMode="2"
;!@InstallEnd@!
Вообще-то, для модифицированного модуля утилита StartX не нужна, и можно было бы обойтись RunProgram="Adobe7.msi /qn" .
Любопытно, что в данном случае 7-Zip продемонстрировал лучшее сжатие, чем WinRAR. Размер 7-Zip SFX (даже с утилитой StartX.exe) оказался 20893 кб против 23825 кб у WinRAR SFX. Oднако, недостатком родного SFX модуля 7-Zip является невозможность сконфигурировать бесключевую распаковку SFX в заданную папку. Модифицированный модуль Олега, позволяет указать папку распаковки в конфигурационном файле и избавляет 7-Zip от данного недостатка.
SFX Creator
Программа написана специально для решения задач по созданию полноценного SFX архива и обладает большими возможностями для создания бесключевых SFX. С ее помощью можно создать как незаметный (silent) инсталлятор, так и инсталлятор с графическим интерфейсом.
Читайте также: