О WinRAR и переносных программах (portable soft)
Вы можете спросить меня: - А причем здесь WinRAR? ... Собственно говоря ни при чем ... Но ... )))
Немного лирики (вместо введения)
Я не хочу долго разглогольствовать о том, зачем нужен переносной софт и нужен ли он вообще. Каждый может решить это сам. Скажу лишь пару слов о своем собственном опыте общения с такими программами и о том, какие сюрпризы вас могут ожидать. Конечно, грамотно сделанная переносная программа будет работать у вас без всяких проблем, но ... Кто ж кроме других таких же бедолаг-пользователей скажет вам, что вот эта программа портированна через ... Никто! ))) Так что перед использованием читайте отзывы других.
Так к чему же нужно быть готовым, используя переносные программы?
Берегите компьютеры других!
Не надо думать, что запуск переносной программы абсолютно безобидная вещь. Между прочим, под видом переносной программы запросто можно получить софт с тихой инсталяцией. Вы попользовались и ушли, а программа осталась. Не знаю, кто и зачем делает такие "переносные" версии, но факт остается фактом.
Еще одна опасность переносных программ кроется в том, что некоторые из них чистят реестр при закрытии. С одной стороны это хорошо: нагадил - почисти. Но если на этом компьютере уже установлена такая же программа, то почти наверняка она перестанет работать!
К более мелким неприятностям можно отнести прописывания себя в реестр, хотя мне кажется, что это наиболее безобидная особенность таких программ.
Ой, она не работает!
Другой класс неприятностей относится к частичной или полоной неработоспособности программ. Это может быть по разным причинам.
Допустим вы скачали и протестировали какую-то программу. Не тешьте себя иллюзией, что когда вы придете в другое место, она у вас обязательно будет работать! Она может даже не запуститься. Это бывает редко, но к этому надо быть готовым, и, например, иметь другую версию этой же программы, если она для вас жизненно необходима.
Другая неприятность может быть связана с неработоспособностью отдельных функций программы. Как правило, это функции, которые требуют либо глубокой интеграции в систему, либо перезагрузку, либо что-то подобное. Причем, неработоспособность - это не худшее, что может вас ждать. Представьте например, что вы меняете размер партиции с данными переносной программой, и она начнет изменения и не сможет их закончить.
Прочитав все это вы, наверно, улыбнетесь и подумаете: - Так все же причем здесь WinRAR?!?
Идеология
Замечу, что вообще-то, достаточно большая часть переносного ПО - это не "настоящие" переносные программы. Это просто софт, который после установки может быть перенесен на другой компьютер и там работать. Собственно о подобных программах я и буду говорить дальше, хотя все это применимо к любому переносному ПО вообще.
Итак у нас есть набор переносных программ. А ... почему бы нам их не упаковать в архив?
Зачем это нужно?
Ну, первый момент очевиден - экономия места, которого на флэшке и так всегда не хватает. Особенно, если к программе присовокуплены хелпы и документация, то выигрыш может быть весьма солиден.
Вторым моментом является удобство запуска. Если мы грамотно создадим архив (сделав его саморазворачивающимся и с запуском самой программы), то нам не придется каждый раз копаться в папке с программой для того чтобы найти нужный ехе-файл.
Наконец, так как архив будет разворачиваться, естественно, не на флэшку, а на компьютер, то, запустив все нужные программы, мы можем спокойно флэшку убрать. Возможно это продлит ее "железную" жизнь, а вам даст лишний повод ее не забыть.
А может не надо?
Если программа сама по себе большая, то ее разархивирование (особенно на слабых машинах) может занять достаточно много времени. Это может быть не удобно.
Если программа маленькая и состоит всего из нескольких файлов, то ее архивирование может оказаться бессмысленным.
Если вы хотите, чтобы после работы с программой сохранялись измененные вами настройки, то вам придется (не закрывая программы!) искать место, куда был извлечен архив и в ручную подменять файлы настроек в своем архиве.
Ну что ж, если на вопрос: - А может не надо? - вы все же ответили: - Надо! - то пойдем дальше.
Технология
Чтобы не говорить отвлеченно, будем все делать на примере программы EmEditor. Вот как она выгледела бы на флэшке:
скажем прямо - не очень удобно искать EmEditor.exe!
Ну что ж, давайте напишем "рецепт приготовления" этой груды файлов в конечное "блюдо".
Делай раз
Делаем архив из папки с програмой (из эстетических соображений я предпочитаю паковать именно папку, а не набор файлов):
В закладке "Общие" обязательно выбираем две (красные) опции: "создать SFX-архив" и "протестировать файлы после установки". Факультативно можно выбрать (синюю) опцию "добавить информацию для востановления". Также, если хотите, можете выбрать более сильный метод сжатия, хотя особого выигрыша в размере обычно это не дает.
Делай два
Переходим в закладку "Дополнительно":
Здесь вы можете выбрать приемлимый для вас процент информации для востановления (если в выбрали в "Делай раз" опцию о ее добавлении). И идем в (красную) кнопку "Параметры SFX".
Делай три
В "Дополнительных параметрах SFX" в закладке "Общие":
нас интересует только (красный) пункт "выполнить после распаковки". Это то, что будет запущено сразу после извлечения архива на диск. В нашем случае это EmEditor.exe, но так как мы архивируем папку, в которой этот файл лежит, то должны сначало указать имя папки. Так что получаем:
EmEditor\EmEditor.exe
Не стоит набирать все это руками - вы можете ошибиться! Лучше копируйте все названия из проводника или своего файлового менеджера.
Делай четыре
В "Дополнительных параметрах SFX" идем в закладку "Режимы":
Здесь обязательно выбираем три (красных) опции: "Распокавать во временную папку", "скрыть все" и "перезаписывать все файлы без запроса".
Что нам это дает?
Включение первой опции приведет к тому, что извлечение архива будет идти во временную папку. Т.е. после извлечения архива и запуска программы (в нашем случае EmEditor.exe) WinRAR будет отслеживать ее работу, а после закрытия удалит все извлеченные на диск файлы.
Вторая опция скрывает весь процесс извлечения, включая выбор папки назначения.
И, наконец, третья опция позволяет молча перезаписывать все файлы в папке назначения, если вдруг они там каким-то чудом уже появились. Если архив имеет очень много файлов, или они большие, то, возможно, более целесообразным будет выбор опции "Пропускать существующие файлы".
В общем-то, все. Созданный таким образом архив будет тихо развертываться на машине, запускать программу, а после ее закрытия стирать все извлеченное на диск. Для пользователя это будет выглядеть так, как будто это вовсе и не архив, а сама программа в виде одного файла. Но ...
Красота спасет мир? - Делай пять
... но иллюзия будет неполной, так как иконка из стопки книг с головой выдает в этом файле именно архив. Да и не эстетично это - иметь у всех программ (пусть это в душе и архивы) одну иконку. Поэтому нам нужна иконка нашей программы! И именно в формате *.ico ... Для этого подойдет любой софт, умеющий извлекать картинки из ехе-шников и dll-лек. Например, IrfanView, хотя лучше использовать софт, специлизирующийся именно на иконках, а не вообще на графических файлах. В конце-концов, иконку на программу можно найти и в интернете. Сам я сделал иконку с помощью программы ArtIcons Pro (кстате, портированную описываемым здесь способом ))) ).
После того, как иконка готова,
в "Дополнительных параметрах SFX" идем в закладку "Текст и графика":
Здесь, ипользуя кнопку "Обзор" у функции "Загрузить значок SFX из файла" добавляем свой (или не свой) иконочный шедевр.
Вот теперь точно все! Жмите везде на ОК и радуйтесь результату. После удаления уже не нужных файлов у меня это стало выглядеть так:
Один файл размером 3,92 МБ вместо первоначальной кучи общим размером 7,72 МБ.
Да, прежде чем идти пить пиво, на всякий случай убедитесь, что ваше произведение искусства работает!
Ложка дегтя
Если вы думаете, что все так просто и безоблачно, то (как всегда в таких случаях бывает) вы ошибаетесь )))
Ну, во-первых, извлечение идет во временную папку, путь к которой содержит пробелы. Для некоторых программ это критично. Конечно, вы можете не выставлять опцию "Распаковывать во временную папку" (из "Делай четыре"), но тогда все извлеченное придется удалять в ручную.
Во-вторых, если в хотите запускать программу с параметрами, содержащими абсолютные пути, то у вас это не получится - неизвестно заранее в какую папку будет извлечен архив. Хотя и эта трудность преодолима, например, через создание bat-файла с командами типа SET Path=%~dp0 и запуском именно его вместо программы.
Вместо послесловия
Если вы можете что-то сделать красиво, нужно делать именно так!
И еще, помните, что нет непреодолимых трудностей, есть лишь наше непреодолимое чувство лени, которое мы скрываем за фразой: "Ну это же невозможно!"