by darkhunter

9
By DarkHunter Способ 1: (никаких платных программ не используется) Нам понадобится: RegShot , InnoSetup5 (можно генераторы скриптов для Inno), AutoIt3 Шаг 1: Делаем снимок реестра до установки программой RegShot. Не закрываем её! Шаг 2: Устанавливаем необходимую программу, настраиваем её. Делаем снимок реестра после установки и сравниваем изменившиеся значения реестра Открываем Inno Setup или генератор скриптов ( в моем случае я для примера использую Inno Script Generator ) Переходим к секции "Registry" Правая кнопка мыши - Add a Row И вписываем изменившееся значения, которое мы увидели после сравнения RegShot'ом (для каждого значения необходимо снова нажать "Add a Row"!) Будьте внимательны тк не все изменившиеся значения относятся к программе! Например значения реестра, которые не относятся к установке программы: все что в названии имеет MuiCache, Cache, cookies и тд. Шаг3: С реестром разобрались, а теперь файлы... Будьте предельно внимательны! Переходим в Inno Script Generator к секции "Files and Dirs" Правая кнопка мыши и снова "Add a row" Дальше обьясню на примере 1: У нас установленна программа в папку C:\Program Files\ test for tracker В папке test for nnm-club находятся все файлы программы Допустим имеется файл C:\Program Files\ test for tracker \test.txt Наши действия: В Inno Script Generator после нажатия "add a Row" в поле Source выбираем C:\Program Files\ test for tracker test.txt В поле DestName пишем test. txt Вместе с исходным расширением файла! Папка задана константой {app} Все правильно! Пример 2: Если существует Subfolder Рассмотрим другой случай: наш файл находится по пути C:\Program Files\ test for tracker \Dark\test.txt В таком случае повторяем вышеописанные действия, но только в поле Subfolder пишем имя нашей папки (в нашем случае Dark) ^) Эти действия необходимо повторить для всех файлов в папке с установленной программой. Но как же быть? Ведь файлы программы располагаются не только в своей папке! Файлы могут располагаться в системной папке, в system32, SysWow64, appData. Необходимо учесть все эти нюансы. Для добавления файлов из таких папок необходимо использовать принцип описанный выше, но уже в качестве "Destination: - Root" использовать другую константу. (для Program Files - {pf}; для Application Data - {appdata} и тд скрытый текст Главную роль в скрипте играют константы. Константы всегда заключаются к фигурные скобки { }. Инсталлятор (или Деинсталлятор) присваивает константам значения, присвоенные пользователем, либо опираясь на конфигурацию системы. Например, константа {win} будет воспринята компилятором как "C:\WINDOWS", если система была установлена в эту папку. Символ { будет воспринят как начало константы. Если требуется ввести "{", наберите ее два раза. Если за константой следует бэкслеш ("\"), инсталлятор автоматически его сотрет, если константа уже оканчивается на бэкслеш. Например, если константа {const} имеет значение "C:\", а мы введем {const}\ filensme, на выходе получится "C:\filename", а не "C:\\filename", как должно быть по логике. Если требуетс вывести именно "C:\\filename", бэкслеш придется внести отдельно вот так: {const} {\}\filename.

Upload: tuvosip

Post on 31-Jan-2016

221 views

Category:

Documents


0 download

DESCRIPTION

hm,vh

TRANSCRIPT

Page 1: By DarkHunter

By DarkHunterСпособ 1: (никаких платных программ не используется)

Нам понадобится: RegShot, InnoSetup5 (можно генераторы скриптов для Inno), AutoIt3

Шаг 1:Делаем снимок реестра до установки программой RegShot. Не закрываем её!

Шаг 2:Устанавливаем необходимую программу, настраиваем её.Делаем снимок реестра после установки и сравниваем изменившиеся значения реестраОткрываем Inno Setup или генератор скриптов (в моем случае я для примера использую Inno Script Generator)Переходим к секции "Registry"Правая кнопка мыши - Add a RowИ вписываем изменившееся значения, которое мы увидели после сравнения RegShot'ом (для каждого значения необходимо снова нажать "Add a Row"!)Будьте внимательны тк не все изменившиеся значения относятся к программе! Например значения реестра, которые не относятся к установке программы: все что в названии имеет MuiCache, Cache, cookies и тд.

Шаг3:С реестром разобрались, а теперь файлы... Будьте предельно внимательны!Переходим в Inno Script Generator к секции "Files and Dirs"Правая кнопка мыши и снова "Add a row"Дальше обьясню на примере 1:У нас установленна программа в папку C:\Program Files\test for trackerВ папке test for nnm-club находятся все файлы программыДопустим имеется файл C:\Program Files\test for tracker\test.txtНаши действия:В Inno Script Generator после нажатия "add a Row" в поле Source выбираем C:\Program Files\test for tracker\test.txtВ поле DestName пишем test.txt Вместе с исходным расширением файла!Папка задана константой {app} Все правильно!Пример 2:Если существует SubfolderРассмотрим другой случай: наш файл находится по пути C:\Program Files\test for tracker\Dark\test.txtВ таком случае повторяем вышеописанные действия, но только в поле Subfolder пишем имя нашей папки (в нашем случае Dark) ^)Эти действия необходимо повторить для всех файлов в папке с установленной программой.Но как же быть? Ведь файлы программы располагаются не только в своей папке!Файлы могут располагаться в системной папке, в system32, SysWow64, appData.Необходимо учесть все эти нюансы.Для добавления файлов из таких папок необходимо использовать принцип описанный выше, но уже в качестве "Destination: - Root" использовать другую константу. (для Program Files - {pf}; для Application Data - {appdata} и тдскрытый текстГлавную роль в скрипте играют константы. Константы всегда заключаются к фигурные скобки { }. Инсталлятор (или Деинсталлятор) присваивает константам значения, присвоенные пользователем, либо опираясь на конфигурацию системы. Например, константа {win} будет воспринята компилятором как "C:\WINDOWS", если система была установлена в эту папку.

Символ { будет воспринят как начало константы. Если требуется ввести "{", наберите ее два раза.

Если за константой следует бэкслеш ("\"), инсталлятор автоматически его сотрет, если константа уже оканчивается на бэкслеш. Например, если константа {const} имеет значение "C:\", а мы введем {const}\filensme, на выходе получится "C:\filename", а не "C:\\filename", как должно быть по логике. Если требуется вывести именно "C:\\filename", бэкслеш придется внести отдельно вот так: {const} {\}\filename.

Далее следует список поддерживаемых констант.

Константы папок.

{app}

Папка, куда устанавливается приложение. Она выбирается пользователем в окне Выбор папки назначения при установке.

Например: если Вы ввели {app}\MYPROG.EXE в значение параметра Source и пользователь пожелал установить Вашу программу в "C:\MYPROG", на выходе получится "C:\MYPROG\MYPROG.EXE".

{win}

Page 2: By DarkHunter

Папка, в которую установлена Windows. Например: ввели "{win}\MYPROG.INI", папка Windows "C:\WINDOWS", на выходе "C:\WINDOWS\MYPROG.INI".

{sys}

Системная папка Windows (System32 на Windows NT).

Например: ввели "{sys}\CTL3D32.DLL" системная папка Windows "C:\WINDOWS\SYSTEM", на выходе "C:\WINDOWS\SYSTEM\CTL3D32.DLL".

{src}

Папка, из которой запущен инсталлятор.

Например: ввели "{src}\MYPROG.EXE", инсталлятор запущен из "S:\", на выходе "S:\MYPROG.EXE".

{sd}

Системный диск. Диск, на котором установлена Windows. Обычно это "C:".

{pf}

Program Files. Путь к файлам программ (самая нужная константа). По умолчанию "C:\Program Files".

{cf}

Общие файлы Common Files. По умолчанию "C:\Program Files\Common Files".

{tmp}

Временная папка. Папка, где созданы временные файлы инсталлятора ("C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и папки удаляются из папки Temp после завершения установки приложения. Эта константа используется в случае, если в секции [Run] указаны файлы, необходимые при инсталляции, но не нужные для дальнейшей работы приложения.

{fonts}

Папка шрифтов. Обычно имекнуется FONTS и находится в папке Windows.

{dao}

Папка DAO. Эквивалентна папке {cf}\Microsoft Shared\DAO.

Константы специальных папок.

В Inno Setup используются и другие константы, именуемые Константами специальных папок. Используются они так же, как и константы папок.

Константы "user" берутся из профиля текущего пользователя, а константы "common" являются общими для профилей всех пользователей.

Как уже говорилось, константы специальных папок применимы ко всем версиям Windows, поддерживающих Inno Setup, включая Windows 95 и NT 4.0.

Константа "common" равна константе "user", если пользователь, устанавливающий приложение, является администратором, либо когда приложение устанавливается на компьютер с операционной системой Windows 95/98/Me.

{group}

Page 3: By DarkHunter

Путь к группе меню Пуск, который пользователь может изменить на странице Выбор папки меню Пуск. В Windows NT/2000/XP эта папка всегда создается для профилей всех пользователей, если только пользователь, устанавливающий приложение, не имеет прав администратора - в этом случае путь задается только для профиля текущего пользователя.

{localappdata}

Путь к локальной папке приложения.

{sendto}

Путь к папке Send To (общей папки Send To нет).

{userappdata} & {commonappdata}

Путь к папке с данными приложения (Application Data).

{userdesktop} & {commondesktop} *

Путь к папке рабочего стола. Лучше пользоваться {userdesktop}

{userdocs} & {commondocs}

Путь к папке Мои документы (на Windows NT 4.0 это папка Personal folder).

{userfavorites} & {commonfavorites} *

Путь к папке Избранное. Для использования включите MinVersion не меньше "4.1, 4". Только Windows 2000, Me, и позднее поддерживают {commonfavorites}; на других Windows {commonfavorites} = {userfavorites}.

{userprograms} & {commonprograms} *

Путь к папке Программы меню Пуск.

{userstartmenu} & {commonstartmenu} *

Путь к "корню" меню Пуск.

{userstartup} & {commonstartup} *

Путь к папке Автозагрузка меню Пуск.

{usertemplates} & {commontemplates} *

Путь к папке шаблонов. Только Windows 2000, Me, и позже поддерживают {commontemplates}; на других Windows, {commontemplates} = {usertemplates}.

Прочие константы.

{\}

Бэкслеш. Прочитайте в начале этой странице о правилах использования {\} и \.

{%NAME|DefaultValue}

Вставляет значение переменной среды.

·NAME - имя переменной среды

·DefaultValue - определяет текст, который будет вставлен в случае, если константа не существует

Page 4: By DarkHunter

·Для вставки запятой, вертикальной черты "|", или закрывающей фигурной скобки "}" поставьте перед ней "%-код_символа.". Например.запятая - это "%2c", вертикальная черта - "%7c", "}" - "%7d". "%" = "%25".

·NAME и DefaultValue могут содержать константы.

Обратите внимание, что описанным выше способом закрывающая фигурная скобка задается только в случае, когда она используется сама по себе. Если же она обозначает константу, подобные изощрения не нужны.

Например:

{%COMSPEC}

{%PROMPT|$P$G}

{cmd}

Полный путь к стандартному системному интерпретатору. На NT/2000/XP, это обычно Windows\System32\cmd.exe. На Windows 9x/Me - Windows\COMMAND.COM. При этом COMSPEC не используется.

{computername}

Имя компьютера, на котором запущен инсталлятор или деинсталлятор (результат функции GetComputerName).

{drive:Path}

Возвращает букву диска и двоеточие из указанного пути (например, "C:"). В случае установки через сеть возвращает имя сервера и имя общего документа (например, "\\SERVER\SHARE").

·Path - путь

· Для вставки запятой, "|", или "}" поставьте перед ней "%-код_символа.". Например.запятая - это "%2c", вертикальная черта - "%7c", "}" - "%7d". "%" = "%25".

·Путь может включать константы.

Примеры:

{drive:{src}}

{drive:c:\path\file}

{drive:\\server\share\path\file}

{groupname}

Имя папки, которую пользователь выбрал на странице Выбор папки меню Пуск. В отличие от константы {group} эта константа равна имени нижней папки, а не полному пути к ней.

{hwnd}

Дескриптор фонового окна инсталлятора.

{wizardhwnd}

Дескриптор окна мастера инсталлятора. Равен '0', если на момент обращения не существует.

{ini:Filename,Section,Key|DefaultValue}

Берёт значение из INI файла.

·Filename - имя ini-файла, из которого производится чтение

Page 5: By DarkHunter

·Section - имя секции

·Key - имя ключа

·DefaultValue - значение, возвращаемое, если параметр не существует

·Если вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая равна "%2c", "|" - "%7c", и "}" - "%7d". Если вы хотите вставить "%", введите "%25".

·Filename, Section, и Key могут включать константы.

Например:

{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program}

{language}

Встроенное имя выбранного языка. Для справки обратитесь к Секция [Languages].

{cm:MessageName}

{cm:MessageName,Arguments}

Возвращает стандартное сообщение на заданном языке

·MessageName - имя стандартного сообщения, из которого производится считывание. Для справки обратитесь к Секция [CustomMessages]

·Arguments - аргументы сообщения, разделенные запятыми

·Если вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая равна "%2c", "|" - "%7c", и "}" - "%7d". Если вы хотите вставить "%", введите "%25".

Каждый аргумент в Arguments может включать константы.

Например:

{cm:LaunchProgram,Inno Setup}

Пример выдает "Launch Inno Setup" , если выбран английский язык.

{reg:HKxx\SubkeyName,ValueName|DefaultValue}

Взвращает значение реестра.

·HKxx - ключ. Для справки обратитесь к Секция [Registry]

·SubkeyName - имя раздела

·ValueName - имя параметра. Пустой параметр = "По умолчанию".

·DefaultValue - значение, возвращаемое, если параметр не существует или не строкового типа (REG_SZ или REG_EXPAND_SZ)

·Если вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая равна "%2c", "|" - "%7c", и "}" - "%7d". Если вы хотите вставить "%", введите "%25".

·SubkeyName, ValueName, и DefaultValue могут содержать константы.

Например:

Page 6: By DarkHunter

{reg:HKLM\Software\My Program,Path|{pf}\My Program}

{param:ParamName|DefaultValue}

Возвращает параметры командной строки.

·ParamName - имя параметра

·DefaultValue - значение, возврашаемое если запрашиваемое значение не существует.

·Если Вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая "%2c", "|" = "%7c", и "}" = "%7d". Если Вы хотите вставить "%", введите "%25"

·ParamName и DefaultValue могут содержать константы.

Например:

{param:Path|{pf}\My Program}

Возвращает c:\My Program если командная строка "/Path=c:\My Program".

{srcexe}

Полное имя инсталлятора, например "C:\SETUP.EXE".

{sysuserinfoname}

{sysuserinfoorg}

Имя организации. Эта информация берется из реестра.

{uninstallexe}

Полное имя деинсталлятора, например "C:\Program Files\My Program\unins000.exe". Эта константа чаще всего используется в секции [Icons] для задания иконки деинсталлятора. Действует, если параметру Uninstallable присвоено значение yes (по умолчанию).

{userinfoname}

{userinfoorg}

{userinfoserial}

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

{username}

Имя пользователя, запустившего инсталлятор или деинсталлятор (результат функции GetUserName).

Шаг 4:Настройки нашей программы:Переходим в секцию "Setup"Тут ,я думаю, в комментариях не нуждается. Выбираем имя программы,версию, степень сжатия и многое другое.Компиллируем наш скрипт нажатием Ctrl+F9Наша программа находится в C:\Users\<Имя Юзера>\Documents\Inno Setup Examples Output

Шаг 5: Заключительный! (как альтернативу можно использовать SFX архив)

AutoIt v3 - это язык для написания сценариев, напоминающий BASIC.

Page 7: By DarkHunter

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

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

Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях,когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.

По замыслу AutoIt предполагался быть средством "тиражирования конфигураций" ПК.Но с момента создания третьей версии его возможности могут быть

использованы для реализации "кухни" автоматизации -написания сценариев решения различных задач, в том числе и для администрирования системы.

Скачиваем полный пакет и запускаем SciTE Script EditorДля полного осознания всех операции требуется прочитать справку по этому языку Пишем:

;предотвращение повторного запуска скриптаIf WinExists(@ScriptName) Then ExitAutoItWinSetTitle(@ScriptName)

; включение нашего инсталлятора в один файл со скриптоми извлечекние его перед использованиемFileInstall("C:\Users\<Имя Юзера>\Documents\Inno Setup Examples Output\setup.exe (имя может быть другое в зависимости от имени файла, который вы создали на предыдущих шагах) ", "C:\Windows\Temp\<вашеимядля файла>.exe")

;запуск нашего инсталлятора в тихом режиме и ожидание завершенияRunWait('C:\Windows\Temp\<вашеимядля файла>.exe /<параметр командной строки>')Параметры командной строки (ключи автоустановки)параметры коммандной строкинам необходимы /VERYSILENT ИЛИ /SILENT

Ниже дописываем ExitИтого наш скрипт имеет вид:

;предотвращение повторного запуска скриптаIf WinExists(@ScriptName) Then Exit

AutoItWinSetTitle(@ScriptName)

; включение нашего инсталлятора в один файл со скриптоми извлечекние его перед использованиемFileInstall("C:\Users\<Имя Юзера>\Documents\Inno Setup Examples Output\setup.exe

(имя может быть другое взависимости от имени файла, который вы создали на предыдущих шагах) ",

"C:\Windows\Temp\<вашеимядля файла>.exe")

;запуск нашего инсталлятора в тихом режиме и ожидание завершенияRunWait('C:\Windows\Temp\<вашеимядля файла>.exe /VERYSILENT')

Sleep(80)

;удаляем временный файлFileDelete("C:\Windows\Temp\<вашеимядля файла>.exe")

Осталось только запустить программу "Compile Script to .exe" и сформировать exe файл.Иконка скрипта будет отображаться в трее и можно будет увидеть выполнил ли он свою работу (и выключился) или что-то мешает работе (останется долго всеть в трее - значит наш инсталлятор не отрабатывает операцию)