Статьи на компьтерные темы, различные технологии и ноу хау а также фильмы, софт, книги и другие новости.

вторник, 20 октября 2009 г.

Как сделать портейбл программу используя NSIS

Статья находится с стадии написания

Статья находится с стадии написания

Для создания портейбл программы вам понадобятся следующие программы.

NSIS

Я делаю портативные программы с помощью NSIS (Nullsoft Scriptable Install
System). Это программа для создания инсталяторов и очень проста в использовании.
Вам также понадобится реестр плагинов для НСИ. Он поставляется с установкой
поэтому она проста в установке. Существует крошечные Reg2NSIS программное
обеспечение под названием, которое может преобразовать. Р-файлов NSIS скриптов.
Он часто делает написание скриптов легче.



Total Uninstall

Это программное обеспечение позволяет легко контроль установок, включая
мониторинг реестра и файловой системе изменений. После процесс мониторинга
изменений реестра могут быть экспортированы.

К сожалению, версии 3 и выше Total Uninstall является условно, но я уверен, вы
можете получить "исправить" для управления этим, если вы читаете это
руководство.



Registry Workshop

Для реестра рабоTotal Uninstall я могу рекомендовать вам использовать реестр семинара. Мне он
нравится потому что это делает реестре поиск и легкой настройки. Она имеет
приятный Отмена-Повтор особенность, которая часто идет под рукой.



Иконы из файла

Для извлечения иконок из первоначальной заявки очень легко с бесплатная утилита
называется иконки из файлов. Она проста в использовании и делает то, что ее
название.



SciTE

Вам понадобится текстовый редактор для создания сценария NSIS. Встроенная в
Windows Блокнота будет делать, но я рекомендую вам использовать SciTE. Это
маленький, но мощный и, более того, это также портативный.



Universal Extractor

Universal Extractor программное обеспечение позволяет извлекать файлы установки.
Это может прийти удобной, потому что вы можете устранить процесс
установки, и, следовательно, никаких изменений сделано в системе перед первым
запуском. Однако, это недостаток, что вы должны узнать, где же она сохранить
свои настройки (в реестре или в других файлах).



RegMon

Regmon это утилита мониторинга реестра, которая покажет вам, какие приложения
досTotal Uninstallпом к реестру, который они являются ключами досTotal Uninstallпа и данные реестра,
что они читать и писать - все это в режиме реального времени. Это полезно, когда
вы хотите узнать, какие ключи реестра, программа использует, где это
хранить регистрационные данные и т.д.



FileMon

FileMon отслеживает и отображает файловую систему деятельности в системе в
режиме реального времени. Вы можете использовать его, если вы хотите
контролировать вашей файловой системы (какие файлы были досTotal Uninstallп, создавать,
удалять и т.д.).



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

Давайте создадим портейбл программу, которая будет делать следующее:


Шаг 1
Делает резервную копию настроек программы, которые она создает в реестре (если таковые имеются)

Шаг 2
Делает резервную копию настроек программы, которые она создает в файлах вне директории программы (если таковые имеются)

Шаг 3
Импортирует настройки программы в реестр

Шаг 4
Импортирует имя пользователя и серийный номер в реестр

Шаг 5
Изменяет пути к программе в реестре

Шаг 6
Запускает программу и ожидает когда она закроется

Шаг 7
Сохраняет (экспортирует) настройки программы из реестра

Шаг 8
Очищает систему от следов оставленных программой во время ее работы

Шаг 9
Восстановливает исходные настройки реестра, сохраненные в шаге 1

Шаг 10
Восстанавливает другие файлы настроек (см. п. 2)


Конечно, это лишь общая схема. Иногда вам нужно только 3 или 5 шагов; все зависит от типа программы.

-------------------------

Давайте для начала сделаем портабельной программу My Notes Keeper 1.7.0.771.

Эта программа является коммерческим программным обеспечением и может быть активирована серийным номером.

Информация о программном обеспечении со своего веб-сайта:

My Notes Keeper является приложением для Windows 9x/2000/XP/NT, которое позволяет хранить все ваши сообщения и информацию в удобных для использования набросках, где вы можете быстро найти то, что вам нужно.


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

-------------

Захват изменений

Во-первых, мы должны изучить, какие файлы будут скопированы и какие разделы реестра создаются в процессе установки программы. Для этого нам понадобится Total Uninstall.


Запустите Total Uninstall и нажмите на первую иконку в верхнем левом углу (Install). В появившемся окне нажмите кнопку "Browse..." и выберите файл установки My Notes Keeper "mnk.exe" (вы найдете его в "Install\My.Notes.Keeper.v1.7.0.771" каталоге). Вы также можете перетащить этот файл в окно Install Total Uninstall.



Когда вы закончите, нажмите на кнопку "Далее" в Total Uninstall. Сейчас Total Uninstall анализирует состояние системы, чтобы после установки прогаммы My Notes Keeper найти те изменения в системе, которые были сделаны во время процесса установки.



Когда система проверки закончит рабоTotal Uninstall, нажмите на кнопку Next. Убедитесьт в том, что в настройках выбрана опция "Launch setup application now". Сейчас Total Uninstall запускает файл установки mnk.exe. Следуйте инструкции и установите My Notes Keeper. Не закрывайте Total Uninstall в процессе установки.


Когда процесс установки закончится нажмите на кнопку "Finish", после этого запустится программа My Notes Keeper. Зайдите в меню Help-Enter Serial Number. Используйте кейген из "Install\My.Notes.Keeper.v1.7.0.771" для получения серийного номера. Чтобы упростить этот процесс, я буду использовать "Portable" в качестве имени и сгенерированный для этого имени регистрационный ключ "35AE664E73E18872". Теперь вставьте эTotal Uninstall информацию в окне регистрации My Notes Keeper.



Пасле регистрации My Notes Keeper можете закрыть его.



Вернитесь к Total Uninstall и нажмите на кнопку Next. Сейчас Total Uninstall анализирует, какие изменения были внесены в систему. По завершению проверки, нажмите на кнопку "Close".

----

3. Интерпретация результатов

Теперь мы будем рассматривать результаты. В окне результатьв программы Total Uninstall можно увидеть, что изменения сгруппированы в три категории:

1. Файловая система

2. Реестр

3. Установленные службы и устройства



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

---------

4. Изменения в файловой системы

Теперь давайте рассмотрим изменения в файловой системе, для этого разверните ветви "File System" в окне результатов Total Uninstallа.



Первая ветвь "C:\Documents and Settings\All Users\Start Menu\Programs\My Notes Keeper".



Это только ссылки (. LNK-файлы), так что ничего важного для нас. Их можно исключить из этого списка (выберите эти ссылки и нажмите кнопку "Delete").

Вы найдете как минимум два файла в разделе "C:\Documents and Settings\YOUR USER NAME", а именно NTUSER.DAT и Ntuser.dat.log. Эти файлы не являются важными для нас, поэтому их можно удалить из списка.


Следующий ветви это "C:\Program Files\MyNotesKeeper",которые являются основными программными файлами, мы будем в них нуждается. Используя файловый менеджер закопируйте этот каталог куда нибудь, например в C:\Portable My Notes Keeper".

Теперь вы можете удалить эти ветви из списка Total Uninstall, если хотите. Я обычно их удаляю, чтобы сохранить список более простым.


Следующее одно это "C:\WINDOWS\Debug\UserMode\userenv.log". Просто лог-файл, удалите эTotal Uninstall ветвь.


Следующий пункт: System32 с подпунктами software.LOG, SOFTWARE в каталоге "Config" и некоторые другие файлы в каталоге "wbem\Repository\FS". Они не являются обязательными для работы МНК, поэтому их можно удалить.


После того как ветвь файловой системы стала пустой, мы можем перейти к разделу реестра.

----------
5. Реестр Windows

Вот некоторые основные сведения о реестре из Wiki.

Реестр Windows


Реестр представляет собой базу данных, которая хранит настройки и параметры для 32 и 64 разрядных версий операционной системы Microsoft Windows и для Windows Mobile. Он содержит информацию и настройки для всех аппаратных средств, программного обеспечения операционной системы, большинстве не-программного обеспечения операционной системы, пользователях, предпочтениях и т.д. Каждый раз, когда пользователь вносит изменения в настройки панели управления, ассоциации файлов, системные политики, или установленное программное обеспечение то эти изменения отражаются и сохраняются в реестре.


Реестр был введен, чтобы упорядочить рабоTotal Uninstall с настройками программ Windows вместо файлов INI, которые использовались для этого ранее. Эти файлы, были как правило, разбросаны по всей системе, что делало их отслеживание долольно затруднительным.



Структура реестра


Реестр разбит на несколько логических разделов, или "keys". Как правило, они известны под именем определений, используемых для досTotal Uninstallпа к ним в Windows API, которые все начинаются на "HKEY" (аббревиатура для "Handle to Key"); часто они сокращаются до трех-четырех букв образуя короткое имя, начинающееся с "HK" (например, HKLM и HKCU).


Каждый из этих разделов состоит из подразделов, которые могут содержать другие подразделы, и так далее. Любой ключ может содержать записи с различных типов. Значениями этих записей может быть:

· Строковый параметр

· Двоичный параметр (любые произвольные данные)

· DWORD, 32-битовое беззнаковое число (число от 0 до 4294967295 [232 - 1])

· Multi-String Значение

· Расширяемая строка данных


Ключи реестра используют синтаксис аналогичный файловым путям в Windows, используя обратную косую черту для обозначения уровней иерархии. E.g. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows относится к разделу "Windows" в подразделе "Microsoft" в разделе "Software" в разделе HKEY_LOCAL_MACHINE.


Разделы HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER имеют одинаковую структуру; приложения обычно при просмотре своих настроек, сначала проверяют их в "HKEY_CURRENT_USER\Software\Vendor's name\Application's name\Version\Setting name", и если параметр не найден ищут их по тому же пути в HKEY_LOCAL_MACHINE. При записи настроек в реестр, используется обратный подход - сначала значения записываются в HKEY_LOCAL_MACHINE, и если данные не могут быть записаны (это бывает как правило, в случае, если вошедший в систему пользователь не имеет прав администратора), то настройки сохраняются в HKEY_CURRENT_USER.



HKEY_CLASSES_ROOT

Сокращенное HKCR, HKEY_CLASSES_ROOT хранит информацию о зарегистрированных приложениях, включая ассоциации с расширениями файлов и OLE объектах класса IDS для приложений, используемых для обработки этих элементов. В Windows 2000 и выше, HKCR представляет собой компиляцию HKCU\Software\Classes и HKLM\Software\Classes. Если данное значение существует в обоих разделах, то используется тот, который находится в HKCU\Software\Classes.



HKEY_CURRENT_USER

Сокращенное HKCU, HKEY_CURRENT_USER хранит настройки, относящиеся к залогинившемуся в данный момент пользователю. HKCU является копией подраздела текущего пользователя из HKEY_USERS.



HKEY_LOCAL_MACHINE

Сокращенное HKLM, HKEY_LOCAL_MACHINE хранит параметры, которые являются общими для всех пользователей на компьютере. Этот ключ в NT версиях Windows находится в файле %SystemRoot%\System32\Config\system. Информация о "железе" компьютера находится в ключе SYSTEM.



HKEY_USERS

Сокращенное HKU, HKEY_USERS содержит соответствующие подразделы ключей из HKEY_CURRENT_USER для каждого пользователя, зарегистрированного на машине.



HKEY_CURRENT_CONFIG

Сокращенное HKCC, HKEY_CURRENT_CONFIG содержит информацию, собранную во время работы компьютера; информация хранится в этом ключе не постоянно, а регенерируется во время загрузки компьютера.


Конечно, вы можете найти более подробную информацию о реестре в интернете, но вы не должны быть экспертом реестра для создания портативных. Сказать по правде, некоторую информацию я привел выше, было новым для меня.

При создании портативных программ вам понадобятся только ключи из HKCR, HKCU и HKLM.



После того как вы узнали о строении реестра Windows и о его разделах, давайте продолжми изучение изменений в реестре.

--------------------------

6. Изменения в реестре

Сначала давайте экспортируем все изменения в реестре, которые были сделаны в процессе установки.

Для этого выберите "File-Export-Registry to re-apply Changes" в Total Uninstall.

В появившемся диалоговом окне выберите "All" вместо "Selected branch" и выберите Created Keys, Created Values and Modified Values (new data), а также установите File Type в Win9x/NT4 Registration file. Нажмите на кнопку ОК. Сохраните в файл "C:\Portable My Notes Keeper\FullReg.reg".

Теперь откройте все под-группы в ветке реестра, которую мы выбрали в Total Uninstall. Вы увидите 3 пункта:


1. HKEY_CLASSES_ROOT (HKCR)

2. HKEY_CURRENT_USER (HKCU)

3. HKEY_LOCAL_MACHINE (HKLM)



HKEY_CLASSES_ROOT



Во-первых, HKEY_CLASSES_ROOT это место, где Windows хранит файловые ассоциации и другие вещи.

Некоторые приложения также хранят свои регистрационные данные здесь.



Теперь оно состоит из трех пунктов:


1. .mnk

2. CLSID

3. mnkfile.



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



Разверните второй пункт (CLSID) и его ветвь ("{B0CC8D3F-EF1A-4400-A5C7-1A2230AA0B8C}").

Он имеет три позиции: Code, Days and Name

Да, это информация о регистрации программы, и мы должны сохранить ее в надежном месте. Выберете родительский ключ ( "(B0CC8D3F-EF1A-4400-A5C7-1A2230AA0B8C)") и потом выберите "File-Export-Registry to re-apply changes". Сохраните его в файл "C:\Portable My Notes Keeper\RegInfo.reg".



Теперь вы можете удалить его из списка, если хотите, но я рекомендую оставить его, поскольку это очень важные данные.



HKEY_CURRENT_USER



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



Есть еще одна ветвь: "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache". Так как ее значения не имеют для создания портебл программы никакого значения, мы можем удалить ее из списка. Теперь мы можем перейти к HKEY_LOCAL_MACHINE.



HKEY_LOCAL_MACHINE



В разделе HKEY_LOCAL_MACHINE первая ветвь "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache". Ничего важного для нас, можно удалить из списка.



Далее идет "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\{00000000-0000-0000-0000-000000000000}", она также может быть удалена.



Далее идет "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Notes Keeper_is1". Также может быть удалена из списка.



Следующий ключ "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prefetcher\TracesProcessed", удалите его из списка.



Если у вас установлены принтеры, вы можете иметь ключ "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\YOUR PRINTER'S NAME". Удалите его из списка.



Теперь вы можете закрыть Total Uninstall.

----------------------
7. Проверка результатов

Теперь давайте убедимся в том, что регистрационная информация, которую мы нашли является той информцией, которую мы хотим. Для этого мы будем использовать программу Registry Workshop.



Потому что мы экспортировали регистрационную информацию в .reg file (RegInfo.reg, помните?), мы должны открыть его с помощью текстового редактора, чтобы увидеть те ключи реестра, которые мы хотим найти. Вот содержание RegInfo.reg:



REGEDIT4

[HKEY_CLASSES_ROOT\CLSID\{B0CC8D3F-EF1A-4400-A5C7-1A2230AA0B8C}]

"Days"="584592960BAF3BEA"

"Name"="Portable"

"Code"="35AE664E73E18872"


Таким образом ключ, который нам нужен, это



HKEY_CLASSES_ROOT\CLSID\(B0CC8D3F-EF1A-4400-A5C7-1A2230AA0B8C)



Или просто "HKCR\CLSID\(B0CC8D3F-EF1A-4400-A5C7-1A2230AA0B8C)"


Запустите программу Registry Workshop и вставьте эту строку в ее адресной строке (в верхней части главного окна под Toolbar):



HKEY_CLASSES_ROOT\CLSID\(B0CC8D3F-EF1A-4400-A5C7-1A2230AA0B8C)



Теперь нажмите Enter и программа Registry Workshop мгновенно перейдет к этому ключу реестра.



Чтобы проверить то, что именнно этот ключ является тем ключом, который хранит регистрационную информацию, мы удалим его. Выберете имя ключа в левой стороне окна программы Registry Workshop и нажмите кнопку Delete (или выберите Delete из меню). В окне подтверждения, выберите Yes.



Так как регистрационная информация отсутсвует в реестре, то давайте проверим как работает программа My Notes Keeper. Потому что мы удалили регистрационные данные из реестра, My Notes Keeper должна вернуться в режим Trial.



Перейдем к папке установки программы ( "C:\Program Files\My Notes Keeper") и запустим ее с помощью "MyNotesKeeper.exe".



Да, как и ожидалось после запуска программы появляется предупреждение о триальности программы. Отлично, тот ключ реестра, который мы удалили содержал в себе регистрационные данные для программы My Notes Keeper.


Как вы могли видеть, важно решить, какие изменения являются важными, а какие нет. Иногда легко отличить важные изменения, но иногда это не так (особенно при рассмотрении изменений в реестре). После создания вашей третьей или пятой портативной программы вы легко сможете решить на какие изменения вы должны обратить внимание.



Теперь, после того как у нас есть все программные файлы и изменения в реестре, мы можем удалить My Notes Keeper. Откройте Панель управления\Установка и удаление программ и удалите My Notes Keeper или используйте ваш любимый деинсталлятор программного обеспечения. Убедитесь, что все программные файлы и каталоги удалились из "C:\Program Files" (или где еще была установлена программа) во время процесса удаления. Если что-то осталось там, удалите это вручную.



Примечание: В некоторых случаях регистрационную информацию не так уж легко найти. См. "Скрытая регистрации данных" в главе III для получения дополнительной информации об этом.

-------------
8. Использование NSIS

Теперь после того как у нас есть все файлы и регистрационная информация, мы можем начать создавать нашу портативную программу.

Во-первых, позвольте представить структуру каталогов, которую я использую при создании портативных программ:


[Appdata]

[Portable]

[Source]

Portable Application.exe

Каталог APPDATA :
Здесь находятся основные программные файлы

Каталог Portable:
Местоположение данных реестра (RegInfo.reg, settings.reg, RegClean.reg, DirSettings.reg и т.д.)

Каталог Source:
Здесь находятся файл запуска NSIS (Portable Application.nsi) и иконка программы загрузчика (Portable Application.ico)

Portable Application.exe
сам портативный загрузчик


Мы сделаем портативный My Notes Keeper используя эту структуру каталогов, так что сделаем следующие изменения:



1. Переместите все файлы и каталоги из "C:\Portable My Notes Keeper" в "C:\Portable My Notes Keeper", за исключением

RegInfo.reg и FullReg.reg

2. Переместите RegInfo.reg и FullReg.reg в каталог "C:\Portable My Notes Keeper\Portable"

3. Создайте папку в "C:\Portable My Notes Keeper\Source".

Я могу заверить вас, что пользоваться программой NSIS очень легко. Кроме этого, я создал несколько шаблонов, которые вы можете использовать для создания своих портативных программ, лишь слегка изменяя в них несколько строк.
-------------------------

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

Отправить комментарий