Регистрация | Вход
paf.ucoz.ru
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Portable Soft » Создание портативных приложений » Создание портативных программ PortableApps.com Format (используя PortableApps.com Launcher)
Создание портативных программ PortableApps.com Format
AdminДата: Вторник, 07.12.2010, 22:19 | Сообщение # 1
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Создание портативных программ формата PortableApps.com Format используя PortableApps.com Launcher

Потребуются программы:
PortableApps.com Launcher
Unicode NSIS
VMware ThinApp 4.6 (как вариант)
Regshot (не обязательно.(я использую вместо нее VMware_ThinApp,но и она бывает нужна))
RegFromApp (Незаменима при отслеживании куда в реестре вносятся данные лицензии)



Статья написана Admin(htaccess) специально для сайта Portable.moy.su (Paf.ucoz.ru).
Копирование разрешено только с указанием источника!
AdminДата: Вторник, 07.12.2010, 22:43 | Сообщение # 2
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Введение

Для начала разберемся что из себя представляет PortableApps.com Format.

Этот формат разработан сайтом PortableApps.com, он является общим для создания портативных приложений, которые можно отличить по расширению «.paf.exe».
Вариант поддержан множеством независимых разработчиков, которые выпустили соответствующие варианты своего ПО.

Ниже приведена структура каталога портативного приложения.

Code
AppNamePortable
+ App
       + AppInfo
       + AppName
       + DefaultData
+ Data
+ Other
       + Help
         + Images
       + Source

Описание на русском языке находится здесь.
Подробное описание на английском можете прочесть тут: PortableApps.com Format.

Нам же главное знать, что:
[indent]


  • Информация о портативном приложении хранится в файле AppInfo.ini в папке AppInfo.
  • Все файлы из папки DefaultData при первом запуске копируются в папку Data (или при отсутствии папки Data)
  • В папке AppInfo находятся appicon.ico , appicon_16.png и appicon_32.png, это иконки приложения и если мы хотим чтобы в инсталляторе все выглядело красиво, рекомендуется их заменить)
  • Если хотите упаковывать в инсталятор программой PortableApps.com Installer, то в папке приложения обязательно должен быть файл Help.html

[/indent]
Основную задачу портативности выполняет Launcher.

Он делает бэкапы ветвей реестра которые использует приложение, при необходимости копирует необходимые для работы программы папки из Data в системные папки. После чего импортирует ветви реестра портативной программы и запускает её.
Благодаря этому программа как бы устанавливается в систему.
После завершения работы программы Launcher восстанавливает родные ветви реестра и возвращает все папки (если такие были) в папку Data.

Launcher ожидает завершения процесса и после этого стирает следы программы. Благодаря этому даже если программа завершилась аварийно, ее следы все равно будут стерты.

Для удобства сайтом PortableApps.com была разработана программа PortableApps.com Launcher, при помощи которой мы и будет создавать Launcher для наших приложений.

Как я уже говорил Launcher должен быть уникален для каждого приложения.

Настройки Launcher’а лежат в файле launcher.ini, но об этом позже.

Полное описание на английском лежит тут, а также в папке с программой. Оно вам не раз понадобится.

AdminДата: Вторник, 07.12.2010, 22:44 | Сообщение # 3
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Сбор данных

Итак, мы разобрались что такое PortableApps.com Format, как в нем происходит «портабелизация» и для чего нужен Launcher.
Основную работу за нас уже сделали, у нас есть универсальный Launcher, который необходимо настроить под конкретное приложение.
Наша основная задача правильно указать Launcher’у что необходимо приложению для работы.

Есть несколько способов определить какие изменения вносит программа при установке.
Ниже я опишу свой метод. Плохой он или хороший решать вам.

Заходим на виртуальную машину и запускаем VMware ThinApp.
Делаем «прескан» системы.
Устанавливаем и запускаем приложение.
Закрываем приложение и делаем «постскан».
Т.к. мы не будет делать портативную программу используя ThinApp, а просто воспользуемся собранной информацией то нам нет нужды настраивать параметры. Поэтому по завершении просто жмем далее до финальной страницы.
На финальной странице нажимаем кнопку open folder. Окно ThinApp можно закрыть.

В открывшейся папке лежит вся информация о данных внесенных программой в систему при установке.

Скопируйте себе папку с установленным приложением. Т.к. использовать папку с файлами приложения из ThinApp не удобно. Он добавляет в каждую папку свой ini файл.

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

Если активация осуществляется путем ввода ключа, то тут нам понадобится воспользоваться программой RegFromApp.

Запустите приложение, запустите RegFromApp и выберите процесс нашей программы. Далее просто активируйте приложение. RegFromApp покажет какие данные при этом внесутся в реестр.

AdminДата: Вторник, 07.12.2010, 22:51 | Сообщение # 4
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Настройка Launcher’а

Данные Launcher’а лежат в папке AppNamePortable\App\AppInfo\Launcher.
Там находится 2 файла (если 1 Launcher)
Это файл с настройками AppNamePortable.ini
И файл изображения splash.jpg.

Примеры файла настроек Вы можете посмотреть в разделе «Поддержка наших приложений», где я выкладываю содержание настроек для каждой программы.

Ниже приведены все возможные настройки Launcher’а и их стандартные значения.
Эти значения присваиваются если мы их не укажем сами в ini файле.
Как правило нам нужна только их малая часть.

Code
[Launch]
ProgramExecutable=AppName\AppNameMenu.exe
ProgramExecutableWhenParameters=AppName\AppName.exe
CommandLineArguments=--data-directory=%PAL  :DataDir%\settings
WorkingDirectory=%PAL:AppDir%\AppName
RunAsAdmin=force
CleanTemp=false
SinglePortableAppInstance=true
SingleAppInsta  nce=false
CloseEXE=another_optional_app.exe
SplashTime=1500
LaunchAfterSplashScreen=true
WaitForProgram=true
WaitForOtherInstances=true    
WaitForEXE1=another_optional_app.exe
RefreshShellIcons=before
HideCommandLineWindow=true
NoSpacesInPath=true

[LiveMode]
CopyApp=false

[Activate]
Java=find
Registry=true
; If you need to run "javaw.exe %PAL:AppDir%\Some\thing.jar", use ProgramExecutable=javaw.exe and CommandLineArguments=-classpath=...%PAL:AppDir%\Some\thing.jar

[RegistryKeys]
appname_portable=HKEY_CURRENT_USER\Software\Pub\lisher\AppName

[RegistryCleanupForce]
1=HKEY_CURRENT_USER\Software\Pub\lisher

[RegistryCleanupIfEmpty]
1=HKEY_CURRENT_USER\Software\Pub

[RegistryValueBackupDelete]
1=HKEY_CURRENT_USER\Software\Qt\Squiggle\NotFirstRun

[FileWrite1]
Type=ConfigWrite
File=%PAL:DataDir%\settings\data.conf
Entry=<config id="home_directory">
Value=%PAL:DocumentsDir:ForwardSlash%</config>
CaseSensitive=true

[FileWrite2]
Type=INI
File=%PAL:DataDir%\settings\data.conf
Section=Paths
Key=home_directory
Value=%PAL:DocumentsDir%

[FileWrite3]
Type=INI
Section=Langauge
Key=language
Value=%PortableApps.comLocaleglibc%

[FileWrite4]
Type=Replace
File=%PAL:DataDir%\settings\data.conf
Find=%PAL:LastDrive%\
Replace=%PAL:CurrentDrive%\

[FileWrite5]
Type=Replace
File=%PAL:DataDir%\settings\data.conf
Find=file:///%PAL:LastDrive%/
Replace=file:///%PAL:CurrentDrive%/

[FilesMove]
settings\file.txt=%PAL:AppDir%\AppName

[DirectoriesMove]
settings=%APPDATA%\Pub\lisher\AppName

[DirectoriesCleanupForce]
1=%APPDATA%\Pub\lisher

[DirectoriesCleanupIfEmpty]
1=%APPDATA%\Pub

[Environment]
PATH=%PAL:AppDir%\AppName;{&}
HOME=%PAL:DataDir%\settings
ForwardslashTest=%PAL:DataDir:ForwardSlash%/settings
DoubleBackslashTest=%PAL:DataDir:DoubleBackslash%\\settings

[Service1]
IfExists=replace
Name=MySvc
Path=%PAL:AppDir%\AppName\svcfoo.exe
Type=service
User=NT Authority
Display=My Service
Dependencies=Foo,Bah
Description=This service is a demonstration of the PortableApps.com Launcher's support for services.

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

[Launch]
Отвечает за запуск приложения.
Какое приложение запускать, с какими параметрами,правами….

[Activate]
Использует ли наше приложение Java или реестр.

[RegistryKeys]
Ключи реестра что использует приложение

[RegistryCleanupForce]
Ветки которые необходимо всегда стирать при выходе

[RegistryCleanupIfEmpty]
Ветки реестра которые удаляются только если пустые

[RegistryValueBackupDelete]
Значение необходимое удалить в нашем файле реестра от программы

[FileWriteN]
Операции с файлами.
Самая интересная секция.
Открывает огромные возможности.
Но так до конца мной и не изучена.

[FilesMove]
Перемещение файлов

[DirectoriesMove]
Перемещение папок

[DirectoriesCleanupForce]
Удалять директории при закрытии программы

[DirectoriesCleanupIfEmpty]
Удалять папку только если она пуста

[Environment]
Управляет окружением Windows

[Service1]
Позволяет управлять сервисами.
Данная секция пока недоступна!

Я покажу Вам пример и все должно быть понятно.

AdminДата: Вторник, 07.12.2010, 22:51 | Сообщение # 5
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Пример

Возьмем содержание Launcher.ini программы Cobian Backup.

Code
;Cobian Backup Portable    
;Launcher: 2.0 beta 4    
;Launcher.ini: 1.01
;Portable.moy.su © 8.04.2010    

[Launch]    
ProgramExecutable=CobianBackup\Cobian.exe    
RunAsAdmin=try    

[Activate]    
Registry=true    

[RegistryKeys]    
CobianBackup=HKEY_LOCAL_MACHINE\Software\CobianSoft\Cobian Backup 10    

[RegistryCleanupIfEmpty]    
1=HKEY_LOCAL_MACHINE\Software\CobianSoft    

[DirectoriesMove]    
Settings=%PAL:AppDir%\CobianBackup\Settings    
DB=%PAL:AppDir%\CobianBackup\DB

Как мы видим в начале в комментариях я указал к какой программе относятся данные настройки, какую версию Launcher я использовал и дата последних изменений настроек.
Версия Launcher.ini показывает приходилось ли что-то менять в настройках.
Этот блок я сделал для себя, Вам не обязательно его повторять.

Далее идет секция [Launch]
ProgramExecutable=показывает какой файл программы запускать
RunAsAdmin=запуск с правами админа

Если у вас в портативном приложении несколько exe файлов, то указывайте в параметрах запуска основной файл.А остальные пропишите в WaitForEXEN=

Секция [Activate]
Registry=true показывает что приложение вносит данные в реест и нам необходимо забекапить старые данные и импортировать ветки от приложения.

[RegistryKeys] отвечает за то какие ветки реестра необходимо контролировать.
Сюда необходимо прописать все ветки которые затрагивает приложение.
Если Вы делали сбор информации как и я, то они показаны в текстовых файлах в корне папки от ThinApp с именами HKLM, HKCU, HKCR, HKCC.
Введите имя для reg файла что будет хранить вашу ветку и укажите какую ветку заменять.
Указывается за раз одна ветка.

CobianBackup=HKEY_LOCAL_MACHINE\Software\CobianSoft\Cobian Backup 10
Имя2=HKCU\ Software\путь2\

[RegistryCleanupIfEmpty] указывает какую ветку удалить если она пуста.
Зачем это? Мы эмулировали только ветку HKLM\Software\CobianSoft\Cobian Backup
Таким образом если программа раньше была в системе то установочник сохранит эту ветку ресестра, внесет нашу а после закрытия восстановит родную.
Но если программы небыло в системе, то лаунчер очистит только ветку HKLM\Software\CobianSoft\Cobian Backup ветка HKLM\Software\CobianSoft останется.

Есть раздел безусловного удаления ветки. Мы его в данном случае не используем.
Объясню почем.Представьте что у CobianSoft есть 3 программы.
Это Cobian Backup, программа 2 и программа3.
В реестре они будут иметь вид:
HKLM\Software\CobianSoft\Cobian Backup
HKLM\Software\CobianSoft\программа2
HKLM\Software\CobianSoft\программа3ъ

Мы не знаем установлены ли все 3 программы или только 1 или вообще ни одной.
Если были 2 и более то удалив раздел CobianSoft все данные остальных программ пропадут. Вот для того чтобы этого не случилось и существует этот раздел.
Ветки для проверки и удаления вносятся так:
Счетчик=ветка реестра:
1=HKEY_LOCAL_MACHINE\Software\CobianSoft
2=ветка2

[DirectoriesMove] отвечает за перемещение папок.
Существует правило, что все файлы которые программа создает в процессе работы хранятся в папке Data. Тоесть удалив эту пупку мы получим свежеустановленную программу.
В данном случае мы просто переносим папку с настройками программы, логи и папку с задачами их директории программы в папку Data.
Обратите внимание, как указана папка назначения!!!
Она включает в себя и название перемещаемой папки.
Settings=%PAL:AppDir%\CobianBackup\Settings

В нашем случае мы больше не затрагивали никакие настройки т.к. они не нужны.
Но параметры лаунчера огромны!!

Например при помощи раздела [FileWriteN] мы можем организовать замену определенной строки в файле.



К сожалению я сам еще только учусь пользоваться Лаунчером, так что буду очень благодарен вам за поддержку.
Если у вас есть желание вы можете перевести на русский язык параметры настройки, что очень поможет всем нам в понимании его работы.
Я надеюсь вместе мы создадим самый большой русский ресурс по PortableApps.com Format.
AdminДата: Вторник, 07.12.2010, 22:52 | Сообщение # 6
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Что делать если программа активируется путем внесения данных в реестр?
Все очень просто.
Я уже говорил что при первом запуске содержимое из папки DefaultData копируются в папку Data.
Все что нам нужно это указать в секции [RegistryKeys] имя и ветку и создать файл с таким именем и данными.
Пример на базе BoostSpeed:

[RegistryKeys]
BoostSpeed_key=HKEY_LOCAL_MACHINE\SOFTWARE\Licenses

Содержание BoostSpeed_key.reg

Code
[HKEY_LOCAL_MACHINE\SOFTWARE\Licenses]
"{K7C0DB872A3F777C0}"=hex:d7,5d,9f,dd,d0,0f,1f,ff,ff,ff,ff,07,1e,46,2e,f2,d8,\
     05,ea,a1,e2,a0,21,5f,96,89,74,ff,ff,ff,ff,ff,ff,ff,ff,8 7,30,0c,c3,ff,ff,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff, ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
     ff,ff,ff,ff ,ff,ff,00,00,00,00,5f,96,89,74,d0,0f,1f,ff,ff,ff,ff,07,1e,46,2e,\
     f2,d8,05,ea,a1,e2,a0,21,5f,96,89,74,ff,ff,ff,ff,ff,ff,ff,ff,87,30,0c,c 3,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff, ff,ff,ff,ff,ff,ff,ff,ff,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,\
     ff,ff,ff,ff,ff,ff,ff,ff,00 ,00,00,00,5f,96,89,74,00,00
"{I62F4C95D54280018}"=hex:24,00,00,00
"{062F4C95D54280018}"=hex:53,35,c2,60,9d,f5,c7 ,c6,2d,63,7f,f7,54,ca,66,d2,ae,\
     3e,87,e2,bd,7c,39,39,0d,8e,d2,63,d6,b6,a0,74,d0,df,e5,ef,c3,c2,4b,e2,fc,aa,\
     ac,50,71,3d,7a,71,66,2 e,b0,49,c6,5f,ae,ab,41,ad,68,75,8b,26,b0,11,14,96,2e,\
     7d,36,b9,d3,25,90,c4,10,7c,71,8d,7e,5f,10,da,e0,73,ee,6a,47,05,84,a9,98,e9,\
     2 1,47,47,8d,61,77,cd,1b,31,d3,78,88,08,f8,a0,64,22,be,e4,74,c0,0c,b4,d6,5e,\
     4e,82,ef,18,74,d1,c3,64,af,23,e4,23,7d,4a,6e,a2,da,07,81,86, 82,02,8a,7a,9a,\
     57,f7,e1,b1,2b,2a,b7,9c,08,24,d2,99,95,eb,3c,99,13,f6,51,91,29

Таким образом, перед запуском портативного приложения Лаунчер импортирует данные регистрации.
AdminДата: Вторник, 07.12.2010, 22:52 | Сообщение # 7
Сержант
Группа: Администраторы
Сообщений: 22
Репутация: 1
Статус: Offline
Создание Launcher’а

И так. Мы создали файл с настройками приложения, положили свою картинку и заменили иконки.
Осталось создать сам лаунчер. Это делается очень просто.

Для начала отредактируйте файл \App\AppInfo\ appinfo.ini
Здесь можете прочесть про описание этого файла.

Затем переименуйте файл с настройками лаунчера в <AppId> из appinfo.ini.

Затем установите портативный Unicode NSIS в туже папку где лежит папка с вашим портативным приложением.

И наконец запустите PortableApps.comLauncherGenerator.exe указав папку с нашим приложением.
Он создаст лаунчер с именем <AppId> из appinfo.ini. При этом иконка файла будет взята из \App\AppInfo\

Все, лаунчер создан! Наше портативное приложение готово к работе.

Но не торопитесь. Советую еще раз запустит виртуальную машину и прогнать портативную программу через ThinApp дабы убедиться что она не оставляет после себя никаких следов в системе.



ВСЕ!!!
На этом описание закончено.
Все вопросы и критику оставляйте в этой теме. со временем доведем статью до совершенства))
lissilДата: Пятница, 12.04.2013, 10:11 | Сообщение # 8
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
честно сказать ничего не понял из написасаного
создал снимок программы......ThinApp

[/size][size=6][size=8][size=10]Настройка Launcher’а
[/size][/size] - скачал с сайта PortableApps.comLauncher_2.2.paf.exe
он распаковался  и там вот что
Other\
App\
Data\
PortableApps.comLauncherGenerator.exe
help.html

непонятно где брать - Данные Launcher’а лежат в папке AppNamePortable\App\AppInfo\Launcher.  -  там этого нет или окуда бать лаунчер ?????

и еще кучи вопросов, к примеру:
Возьмем содержание Launcher.ini программы Cobian Backup.

откуда мне знать куда в реестре программа прописалась, и что мне удалять или нет

</b>
Цитата
<b>Создание Launcher’а И так. Мы создали файл с настройками приложения, положили свою картинку и заменили иконки.
Осталось создать сам лаунчер. Это делается очень просто.
но где создали в какой папке в чем и как не пойму ничего, если не трудно опишите более подробно
Цитата
Затем установите портативный Unicode NSIS в туже папку где лежит папка с вашим портативным приложением
- папка вкоторую собрал ThinApp ?????

вот потом сиди и думай что куда копировать и где что брать.

Помогите пожалуйста разобраться если не трудно

Сообщение отредактировал lissil - Пятница, 12.04.2013, 10:11
tuz-vetalДата: Суббота, 03.01.2015, 20:05 | Сообщение # 9
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
А тут есть кто живой на этом сайте?
Форум » Portable Soft » Создание портативных приложений » Создание портативных программ PortableApps.com Format (используя PortableApps.com Launcher)
  • Страница 1 из 1
  • 1
Поиск: