четверг, 3 апреля 2008 г.

Portable – сделай сам vol.2

Салам алейкум..

Помниться писал как-то одним скучным апрельским днем о том как самому без лишних умственных затрат получить переносную программу. Сегодня же наоборот хочу рассказать о том как с небольшим умственным напряжением собрать программку для запуска с флешки, внешнего жесткого диска и им подобным девайсам (устройствам).



В качестве подопытного кролика я выбрал чудную программу для подсчета трафика DU Meter. Выбрал ее потому как нуждался в хорошей программе подсчета трафика , к тому же уже имел опыт общения с этой программой и решил не заморачиваться поиском альтернатив. В комментариях можете тыкать меня носом в оные, не взирая на личности.



Итак, начнем. Для проведения этой операции нам понадобятся:

1. Universal Extractor - оффсайт, но активное обсуждение ведется здесь ,на КпНемо этот бесплатный распаковщик проскакивал здесь и еще вот в этой новости, качать можно вот отсюда

2. Сам DU Meter

3. Знание английского языка – но можно и без него.

4. Самый главный пункт – стремление и желание.





После того как закачаете и установите Universal Extractor (можно выкачать как зип- версию , так и инсталлятор – зависит от ваших предпочтений). Одно отмечу от себя, забирайте версию 1.5 потому как она более стабильна, но в этом случае необходимо будет еще закачать обновление для программы The Inno Setup Unpacker [(http: rar)] [(http: rar)] . Она входит в состав инсталляционного пакета Universal Extractor , но та что была в пакете версии 1.5, не справилась с распаковкой. Об этом ниже. Еще одно отступление – испытуемую программу можно распаковать и Inno Setup Unpacker-ом, но мы же с вами уважаемые люди и не будем ковыряться в командной строке :) (по крайней мере, не на этом этапе).

Продолжаем разговор, как говаривал один из мультипликационных персонажей. Немного об алгоритме наших действий. Во – первых мы должны постараться распаковать необходимый инсталляционный пакет, а потом уже чесать затылок и думать что делать дальше – тыкать по научному или читать литературу.

Таким образом, для начала необходимо установить, чем упакован наш инсталлятор. Я делаю это просто – Нажимаю F3 в Total Commander –е, благо Lister-плагин Fileinfo установлен и настроен. По нажатии выскакивает, такое вот окошко (рис.1)







Рис.1



Если же у вас нет установленного Тотал Коммандера , то вы сможете выделить ехе-файл и нажав правую кнопку мыши (райт-клик) выбрать меню Properties (Свойства). Теперь вы должны увидеть следующее (рис2.)







Рис.2

И в первом и во втором случае нас интересует одна и та же строчка: Comments : This installation was built with Inno Setup. В переводе это означает, что инсталляционный пакет был создан с помощью Inno Setup



Inno Setup — бесплатный инсталлятор для Windows программ. Впервые выпущенный в 1997 году, Inno Setup сегодня конкурирует и даже превосходит многие коммерческих установщики по функциональности и стабильности.




А значить нам нужен распаковщик для Inno Setup. Вот теперь выбор за вами, либо распаковать все это хозяйство с помощью Universal Extractor – райт-клик на файле инсталляции и выбираем UniExtract to Subdir (рис.3)







Рис.3



Ну или с помощью другой The Inno Setup Unpacker – а , как это делать я не скажу потому как не разбирался с этой программой, можете занятся этим на досуге .Другие возможные варианты распаковки не рассматривал , так как хватило того что было под рукой. Едем дальше – после распаковки получаем папку следующего содержания:







{app}\

{pf}\

embedded\

install_script.iss




Из всего этого нас интересуют папка {app} вместе со всем содержимым и файл install_script.iss – файл содержащий скрипты необходимые для инсталляции. Подробно рассматривать весь синтаксис скриптового файла инсталляции мы рассматривать не будем, для более глубокого изучения проследуйте сюдаили скачайте архив с приложениями к этой статье. Вернемся к нашим баранам, как говорят французы. Открываем файл install_script.iss любым текстовым редактором (я же опять нажимаю кнопку F3) и видим следующие секции:

1. [Setup] – нас она не интересует, это общая информация о пакете.

2. [Files] – самая интересная часть, тут описывается пути установки файлов при распкавке.

3. [Registry] – еще одна интересующая нас секция. Тут прописаны все измения , которые будут внесены в реестр, при установке.

4. [Run] – тоже должна нас заинтересовать, команды после установки.

5. [UninstallRun] – аналогична предыдущей секции, только тут команды запускаемые, при удалении программы.

6. [Icons],[CustomMessages], [Languages] – нам не важны. Все это вспомогательные команды для инсталлятора.



Бросив беглый взгляд в секцию [Files] – мы с вами видим , что практически все что нам нужно находиться в папке {app} . Такой вывод я сделал на основании того, что большинство команд инсталлятора выглядит следующим образом:



Source: "{app}\DUMeter.exe"; DestDir: "{app}";




Что буквально означает – из Источника (папки {app} в инсталляторе), скопировать файлы в папку назначения на жестком диске. Папку назначения выбирает пользователь при установке.



Source: "{pf}\Windows Sidebar\Shared Gadgets\DUMeter.gadget\htlogo66x58.png"; DestDir: "{pf}\Windows Sidebar\Shared Gadgets\DUMeter.gadget";


Эта и ей подобные строчки означают, что файлы из инсталляционного пакета {pf} копируются в Program Files на компьютер пользователя. Отмечу –что данная секция интересна пользователям Висты, так как тут упоминаются файлы для Windows Sidebar-а.. У меня установлен ХР, поэтому эта папка меня не заинтересовала.. Из всего вышеописанного следует что ДУМетр спокойно запустится из любой директории любого носителя. Но советую вам не торопиться и обратить внимание – на всякий случай на секцию [Registry] :



Root: HKLM; Subkey: "Software\Hagel\DU Meter"; ValueName: "InstDir"; ValueType: String; ValueData: "{app}"; MinVersion: 0.0,5.0; Flags: createvalueifdoesntexist uninsdeletekey

Root: HKCU; Subkey: "Software\Hagel\DU Meter"; MinVersion: 0.0,5.0; Flags: uninsdeletekey


Тут как мы видим в реестр добавляется информация о папке куда установлено приложение и информация для деинсталляции. Оно нам не нужно, поэтому смело игнорируем эти команды. Остались последние секции куда нам следует глянуть – это [Run] – тут как мы выше выяснили, находятся команды, которые запустятся при удачной инсталляции. И секция [UninstallRun] – соответственно необходимые для деинсталляции (в нашем случае - закрытия) программы.



Filename: "{app}\DUMeterSvc.exe"; Parameters: "/reinstall"; StatusMsg: "Installing DU Meter service"; MinVersion: 0.0,5.0;

Filename: "{app}\DUMeter.exe"; Parameters: "/regserver"; StatusMsg: "Registering DU Meter components"; MinVersion: 0.0,5.0;

Filename: "{app}\DUMeter.exe"; Parameters: "--firstrun"; Description: "Run DU Meter"; MinVersion: 0.0,5.0;




В первой строчке говориться, что для успешного запуска приложения необходимо для начала запустить DUMeterSvc.exe с параметром "/reinstall" , и зарегистрировать данный сервис командой DUMeter.exe /regserver (Как выяснилось в дальнейших испытаниях, эта строчка добавляет программу в автозапуск – поэтому ее использовать я не стал). Далее запускаем сам DUMeter.exe и не забываем параметр –firstrun (хотя можно про этот параметр и забыть).



Filename: "{app}\DUMeterSvc.exe"; Parameters: "/uninstall"; RunOnceId: "duserviceuninstall"; MinVersion: 0.0,5.0;

Filename: "{app}\DUMeter.exe"; Parameters: "/unregserver"; RunOnceId: "dumeteruninstall"; MinVersion: 0.0,5.0;




Здесь описаны ключи запуска при удалении программы, в нашем случае закрытии. Вот в принципе и все – осталось только вышеопределенные команды запустить из командной строки и гордиться собой. Вы только что своими руками создали переносную программу. Но согласитесь, что каждый раз набивать эти команды вручную дело конечно не хитрое, но хлопотное. Да и к тому же если вы захотите распространять ваше детище, то в таком виде оно не будет иметь успеха. Самый быстрый способ – это написать бат-файл, где и перечислить все необходимые команды. Но или если вы обладаете знаниями одного из языков программирования, то можете скомпилировать лоадер(загрузчик) со сплаш-скрином (окошко которое вы видите перед тем как загрузиться основная форма приложения, например при запуске Excel и т.д.)

Лоадер я писать не стал, потому как ленив и иду по пути наименьшего сопротивления, а вот бат-файлик состряпать вам помогу. Необходимые справочные материалы в приложении, ну или если хотите вот вам ссылки и еще для начала этого хватит . А пока повторяйте за мной.



Листинг бат-файла.

@Echo Off

cls

color 1f

:Entrance

ECHO.

ECHO.

ECHO.

ECHO.

ECHO.

ECHO +========================================================================+

ECHO + Portable DUMetr Controler by WarmSnow (Baku Azerbaijan 29-01-2008) +

ECHO +========================================================================+

ECHO + Press I to Instal , S - Start , C - Close , U - Uninstal +

ECHO +========================================================================+

ECHO.

SET CHOICE=

SET /P CHOICE="* Enter Choice: "

IF /I '%CHOICE%'=='I' GOTO Install

IF /I '%CHOICE%'=='S' GOTO Start

IF /I '%CHOICE%'=='C' GOTO Close

If /I '%CHOICE%'=='U' GOTO Uninstall



CALL :inputerror



:Install

ECHO Now we'll installing and registering service

ECHO And Applying first run commands

DUMeterSvc.exe /reinstall

DUMeter.exe --firstrun



GOTO EOF



:Start

ECHO Now Starting application

DUMeterSvc.exe

DUMeter.exe

ECHO All Done



GOTO EOF



:Close

ECHO Now Closing application

TASKKILL /F /IM DUMeter.exe /T

TASKKILL /F /IM DUMeterSvc.exe /T



GOTO EOF



:NOw Uninstalling application

ECHO Uninstall

DUMeterSvc.exe /uninstall

DUMeter.exe /unregserver



GOTO EOF



:inputerror

CLS

color 4f

ECHO.

Echo !! - ERROR - !!

ECHO !- Invalid input specified. Please choose an available option by

Echo typing the letter specified in the option you want to choose.

Echo.

pause

GOTO :EOF



:EOF

color 1f

ECHO.

ECHO.

ECHO.

ECHO.

ECHO.

ECHO +========================================================================+

ECHO + Again :) ?: +

ECHO +========================================================================+

ECHO + [Y]es / [N]o and Exit +

ECHO +========================================================================+

ECHO.

SET CHOICE=

SET /P CHOICE="* Enter Choice: "

IF /I '%CHOICE%'=='Y' GOTO Entrance

If /I '%CHOICE%'=='N' GOTO EOF2

CALL :inputerror



:EOF2

Endlocal




И если вы все сделали правильно, то должны увидеть вот такое окошко (рис.4)







Рис.4



Вот теперь все. Надеюсь, не утомил вас своими буквами. Хороших переносных программ вам. Все перечисленные программы и справочные материалы приложены в архиве к этой статье. Вопросы направляйте по адресу zaurbb@gmail.com



Baku Azerbaijan 29-01-2008





Полезные ссылки, не вошедшие во вложение к статье.



1. - Обзор команд и драйверов MS-DOS 6.2

2. - Command-line reference A-Z (Английский язык)

3. - Portable programs & Apps (Английский язык)

4. - Готовые Программы (Английский язык)



Остальные ссылки в первой части, она имеется в архиве.


File: how_to_portable_#2.rar

DownloadLink: [(http: rar)] [(http: rar)]

File-Size: 9.94 MB

Uploaded: 29/01/2008, 17:18:17

3% на восстановление и пароль wsnow.

Ваш ТС

Комментариев нет: