Портування Delphi7 на USB-ключ.

Зручно прийти за будь-комп, вставити брелок, покодить, що знадобиться, вийняти брелок і піти, зберігши результати роботи на ньому. Не витрачаючи сили і 30 хвилин на інсталювання самої Delphi, якщо це взагалі можливо в бібліотеках, інтернет-кафе і на ноутбуці боса, до якого маєш доступ на годину раз за все життя. А іноді просто пре написати прогу для закриття банера реєстрації або вбивання процесу нового worm, а Delphi не встановлена і не налаштована..!

Ідея запису своїх програм на USB Flash-брелоках — очевидно позитивна збереженням налаштувань, і незалежністю від поточної конфігурації Windows. З’явилися навіть брелоки, эмулирующие CD-ROM для користування autorun, але я взяв простий Silicon-Power на 1GB, який дешевше аналогів в два рази (якщо пошукати).

Інсталятор Delphi вбудовує її в систему. Поставимо тріал-версію Delphi-7 себе на хард.

ftp://ftpd.borland.com/download/delphi/d7/Delphi7TrialInstall.exe

Конфігурація установки мінімальна, ніяких Help, Demos і BDE-компонентів (вкладемося на 128MB-ключик). Shared-компоненти ставте в папку Borland, так, щоб сама папка містила і їх, і програмну теку Delphi.

Після установки, подивіться дату зміни файлів в папці DelphiBACKSLASHbinBACKSLASH, виявити точне до хвилин час, коли проходила установка, відкрийте папку WinodwsBACKSLASHsystem32 і подивіться, які пакети були докинуты туди в цей же час. Скопіюйте собі на брелок, і папку Borland теж.

Примітка: Start-Run(Пуск-Виконати). Наберіть %systemroot%BACKSLASHsystem32 і зберігаються в папці, натисніть на колонку Modified, щоб відсортувати список.

Тепер реєстру. HKCUBACKSLASHSoftwareBACKSLASHBorland, збережіть усю гілку у файл з ім’ям HKCU.reg (краще робити в текстовий формат Win95/NT4, сумісний з усіма версіями Windows). Зазначу, що в HKLM налаштування зберігаються теж, але дельфі працює і без цього ключа. Реєстр відповідає за реєстрацію пакетів з компонентами.

Примітка: Start-Run. введіть Regedit. File-Export. HKCU — це HKEY_CLASSES_ROOT.

Далі, хитрий момент реєстрації продукту. c:BACKSLASHdocuments and settingsBACKSLASH.borland — тут лежить один файлик, registry.slm, його теж треба зберегти.

Отже,
1. папка borlandBACKSLASHdelphi і borlandBACKSLASHshared (в останній важлива DLL-ка дебагера)
2. System32 — файли пакетів.
3. Гілка Borland в реєстрі HKCU.
4. Файл реєстрації продукту .borlandBACKSLASHregistry.slm

Все це копіюємо на USB-ключ, але спочатку в папку на жорсткому диску, так швидше налагоджувати.

Створюємо пакетні файли установки.

install.bat
—————-
@echo off

echo Copying System32 files…
copy /Y System32BACKSLASH*.* %SystemRoot%BACKSLASHSystem32BACKSLASH

echo Registering product…
md %appdata%BACKSLASH..BACKSLASH.borland”
copy registry.slm %appdata%BACKSLASH..BACKSLASH.borlandBACKSLASH”

echo Configurating System Registry…
regedit /s HKCU.reg

echo Registering degugger kernel…
regsvr32 BorlandBACKSLASHSharedBACKSLASHDebuggerBACKSLASHBORdbk70.dll
————

uninstall.bat
————
@echo off

echo Deleting System32 files…
Del %systemroot%BACKSLASHSystem32BACKSLASHCC3260MT.DLL
Del %systemroot%BACKSLASHSystem32BACKSLASHIWHTMLLayoutMgr.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHIWPreviewMgr.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHmidas.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHqtintf70.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHstdvcl40.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHXercesLib.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHxercesxmldom.dll
Del %systemroot%BACKSLASHSystem32BACKSLASHadortl70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHbdertl70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdbexpress70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdbrtl70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdbxcds70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdsnap70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdsnapcon70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdsnapent70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHdss70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHibevnt70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHibxpress70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHinet70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHinetdb70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHinetdbbde70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHinetdbxpress70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHIntraweb_50_70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHIntrawebdb_50_70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHqrpt70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHrtl70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHsoaprtl70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHtee70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHteedb70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHteeqr70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHteeui70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvcl70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvclactnband70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvcldb70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvcldbx70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvclie70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvcljpg70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvclshlctrls70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvclsmp70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvclx70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvisualclx70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHvisualdbclx70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHwebdsnap70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHwebsnap70.bpl
Del %systemroot%BACKSLASHSystem32BACKSLASHxmlrtl70.bpl

echo Deleting registration of the product…
Del %appdata%BACKSLASH..BACKSLASH.borlandBACKSLASHregistry.slm”
rd %appdata%BACKSLASH..BACKSLASH.borland”

echo Configurating System Registry…
regedit /s HKCU_Remove.reg

echo Unregistering degugger kernel…
regsvr32 /U BorlandBACKSLASHSharedBACKSLASHDebuggerBACKSLASHBORdbk70.dll
———-

HKCU_Remove.reg (значок мінуса перед HKCU — це інструкція «видалити» для regedit)
———
REGEDIT4

[-HKEY_CURRENT_USERBACKSLASHSoftwarebackslashborland]

———

run.bat (необов’язковий, для зручності)
———
@cd BorlandBACKSLASHDelphi7BACKSLASHbin
@delphi32
cls
———

Отже, папка на брелоку буде містити:

1. Папка Borland (87.5 МБ) з подпапками BorlandBACKSLASHDelphi7 (Bin, Lib, інші папки середовища) і BorlandBACKSLASHShared (папки Debugger, DBExpress)
2. Папка System32 (тут 46 runtime-пакетів, 20.8 МБ)

та файли:

HKCU.reg (гілка реєстру з налаштуваннями пакетів)
HKCU_Remove.reg (файлик деінсталяції)
install.bat (інсталятор)
registry.slm (реєстрація продукту)
Run.bat (запуск програми)
Uninstall.bat (дєїнсталлятор)

Готове. Копіюємо на ключ.

Процедура запуску середовища: вставляємо ключик у будь-яку машину, запускаємо install.bat, який попрацює хвилину.
Потім Run.bat або запуск delphi32.exe з каталогу binBACKSLASH

Якщо треба прибрати сліди інсталятора, uninstall.bat, — але цього можна не робити, і тоді при наступному запуску install не знадобиться.

————-
Про різне:
Реєстрація DLL-ки дебагера прибирає відладчик DR.Watson і не відновлює його. Це невеликий бонус, не заважає роботі Windows на дорогих машинах.

На дуже небагатьох машинах є USB2.0, тому доводиться вставляти ключ в звичайний USB-порт, тобто, робота з файлами протікає повільно. Але, враховуючи бонуси переносимості, це прийнятно.

У HKCU-файлику залишаться шляху на диску до інсталяції Delphi, і ці шляхи відрізняються від шляхів на ключику, але дельфик їх не використовує, тому сміливо залишаємо їх у спокої.

Можете спробувати кинути пакети з System32-папки в папку binBACKSLASH і не копіювати їх кожен раз в WindowsBACKSLASHSystem32BACKSLASh, тому що файли шукаються, як правило, спочатку в поточній папці, а потім через змінну оточення Path командного рядка. Можливо, це прокотить!

До речі, Delphi додає до змінної Path свої директорії, але ми цього не робили, все працює і так.

У процесі переносу використовувалися утиліти аналізу Filemon і Regmon.
Їх адресу sysinternals.com — він переїхав на www.microsoft.com/technet/sysinternals/processesandthreadsutilities.mspx

HackZona видаляє символи зворотного слеша, тому я замінив їх на слово BACKSLASH. Відкрийте текстовий редактор і замініть всі слова BACKSLASH на дзеркальне відображення символу ‘/’.
————

Результат: ми маємо переносити Delphi, версією в 108 мегабайт (на харді 136), USB-ключі 120 (різниця в розмірах із-за різного розміру кластерів). Можна створювати, компілювати та запускати програми.

Удачі Вам у rapid-кодинге!