Помниться писал как-то одним скучным апрельским днем о том как самому без лишних умственных затрат получить переносную программу. Сегодня же наоборот хочу рассказать о том как с небольшим умственным напряжением собрать программку для запуска с флешки, внешнего жесткого диска и им подобным девайсам (устройствам).
В качестве подопытного кролика я выбрал чудную программу для подсчета трафика 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
{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
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;
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;
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
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.
DownloadLink: [(http: rar)] [(http: rar)]
File-Size: 9.94 MB
Uploaded: 29/01/2008, 17:18:17
3% на восстановление и пароль wsnow.
Ваш ТС
Комментариев нет:
Отправить комментарий