Вы должны войти, чтобы создавать сообщения и темы.

Вопрос по созданию портативных программ

Страница 1 из 7► 7

Доброго времени суток всем👋🏻🌙🌞
Не так давно решил научиться создавать портативные программы интереса ради. Посмотрел ролик Хачатура несколько раз, но остались некоторые вопросы, я постараюсь объяснить. И так, про перемещение директории понятно, разобрался, но вот как быть со значениями в реестре, что оставляет программа мне пока что не понятно. У нас есть ini файл, в котором, в свою очередь, есть такие настройки:

FileWrite

Если мы экспортируем ключи реестра, связанные с программой, называем ее "Default" и перемешаем в папку "Settings" - то, эти параметры "FileWrite" относятся к чистке реестра после закрытия программы, правильно ли я понимаю? И если мы экспортируем несколько ключей реестра программы в папку "Settings", то называть последующие файлы стоит, например, так: "Defaut2", "Default3..." и т д. То и каждому этому дефоту нужно присваевать эти два параметра "FileWrite", заменяя только название "Default" в зависимости от того, как мы назвали этот параметр? То есть, общая картина такая:
1. Указываем путь к значению в реестре здесь: 
RegistryKeys

2. Потом эти самые значения реестра экспортируем в папку Settings
3. Вносим названия экспортированных значений, то есть, "Default", в "FileWrite", изменяя только название "Default" в зависимости от того, как мы назвали этот параметр.

Так ведь эта работает, люди добрые? подскажите/укажите на ошибки в моем восприятии всей этой картины

Добрый🖐.

Если мы экспортируем ключи реестра, связанные с программой, называем ее "Default" и перемешаем в папку "Settings" - то, эти параметры "FileWrite" относятся к чистке реестра после закрытия программы, правильно ли я понимаю? И если мы экспортируем несколько ключей реестра программы в папку "Settings", то называть последующие файлы стоит, например, так: "Defaut2", "Default3..." и т д. То и каждому этому дефоту нужно присваевать эти два параметра "FileWrite", заменяя только название "Default" в зависимости от того, как мы назвали этот параметр? То есть, общая картина такая:/

Defaut(название настроек реестра) можно назвать хоть как, в ini файле просто прописать другое название настроек реестра, а можно вообще реестр не добавлять в папку settings, а прописать в ini только откуда что взять(и его имя reg файла) и после первого закрытия программы, он стащит настройки(но это если не планируется надстройка программы перед первым запуском).
FileWrite вообще можно не писать, его значение и вообще всех сегментов читайте на сайте справку, все объяснить не получится, это все с опытом приходит и там же как Хачатур и говорил, можно задать вопрос. 

Лайкнул Алик
Алик
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

спасибо, Михаил, буду разбираться)

а еще такой вопрос: как вносится имя раздела HKEY_USERS в сокращенном варианте для портабл? пробовал разные версии, выдает, что нет таких понятий) Или этот раздел не вносится вообще?

HKEY_USERS не вносится, используйте  HKEY_CURRENT_USER(HKCU) это одно и тоже.

Лайкнул Алик
Алик
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Сидел, пытался, пытался, но не так не понял, как сделать так, чтобы ключи не оставались в реестре... запутался вовсе.. эх 😪
Приложу свою версию "портативной" программы, может кого не затруднит подсказать мне, что я не так сделал - буду благодарен
https://www.upload.ee/download/13870299/9bdf75bb796a1a892296/Portable_Defraggler.zip

Всем привет!
Что бы не плодить темы задам вопрос здесь. Уже делал мелкие портативки и все получалось, и вот начал делать еще одну, но лаунчер не создается и я, хоть убейся, не понимаю почему. Может кто подскажет, что не так?

AppInfo.ini
[Details]
Name=Fallout 76 Quick Configuration
AppId=Fallout 76 Quick Configuration
Publisher=убийца_смерти2004
Language=Russian
Trademarks=убийца_смерти2004

[Version]
PackageVersion=1.9.5.0
DisplayVersion=1.9.5.0


Fallout 76 Quick Configuration.ini
[Launch]
ProgramExecutable="Fallout 76 Quick Configuration\Fo76ini.exe"
DirectoryMoveOk=yes

[Activate]
Registry=true

[DirectoriesMove]
"Fallout 76 Quick Configuration"="%USERPROFILE%\AppData\Local\Fallout 76 Quick Configuration"

[FilesMove]
Fo76ini.exe.log="%USERPROFILE%\AppData\Local\Microsoft\CLR_v4.0_32\UsageLogs"
updater.exe.log="%USERPROFILE%\AppData\Local\Microsoft\CLR_v4.0_32\UsageLogs"

[RegistryCleanupForce]
1=HKLM\SOFTWARE\Microsoft\Tracing\Fo76ini_RASAPI32
2=HKLM\SOFTWARE\Microsoft\Tracing\Fo76ini_RASMANCS
3=HKLM\SOFTWARE\Microsoft\Tracing\updater_RASAPI32
4=HKLM\SOFTWARE\Microsoft\Tracing\updater_RASMANCS


Custom.nsh
${SegmentFile}

${Segment.OnInit}
System::Call "kernel32::GetCurrentProcess()i.s"
System::Call "kernel32::IsWow64Process(is,*i.r0)"
StrCmp $0 0 +2
SetRegView 64
!macroend

${SegmentPrePrimary}
SetRegView 64
SetRegView LastUsed
!macroend

${SegmentPostPrimary}
SetRegView 64
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\Fo76ini_RASAPI32`
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\Fo76ini_RASMANCS`
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\updater_RASAPI32`
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\updater_RASMANCS`
Pop $0
SetRegView LastUsed
!macroend


Часть PortableApps.comLauncher.nsi
Name "Fallout 76 Quick Configuration"
OutFile "${PACKAGE}\Fallout 76 Quick Configuration.exe"
Icon "${PACKAGE}\App\AppInfo\appicon.ico"
Caption "Fallout 76 Quick Configuration"
VIProductVersion 1.9.5.0
VIAddVersionKey ProductName "Fallout 76 Quick Configuration"
VIAddVersionKey Comments "Fallout 76 Quick Configuration by убийца_смерти2004"
VIAddVersionKey CompanyName убийца_смерти2004
VIAddVersionKey LegalCopyright убийца_смерти2004
VIAddVersionKey FileDescription "Fallout 76 Quick Configuration by убийца_смерти2004"
VIAddVersionKey FileVersion 1.9.5.0
VIAddVersionKey ProductVersion 1.9.5.0
VIAddVersionKey InternalName "Fallout 76 Quick Configuration"
VIAddVersionKey LegalTrademarks "убийца_смерти2004"
VIAddVersionKey OriginalFilename "Fallout 76 Quick Configuration by убийца_смерти2004"

Ну или вот архив с программой и всеми ini (включая PortableApps.comLauncher.nsi)

Добрый вечер
Я не знаток, но все же попытался попробовать разобраться в проблеме - все проверил, но ошибка, действительно, не уходит, структура папок, содержание верное, почему пишет, что не существует appinfo.ini - не понятно..
Вижу, ты в этом получше меня соображаешь, можешь, пожалуйста, какие советы дать? может на источник какой, чтобы я мог разобраться в работе реестра. Сегодня сидел и мучился над программой почти весь день, но ничего не получилось уже совсем поник. Вроде читаю справку, что выше Михаил указал, но все равно много вопросов возникает.. совсем руки опустились 😪

Да я в общем-то тоже в этом почти не понимаю. Попытался разобраться с твоей проблемой, но ничего не вышло. Никак с реестром лаунчер не взаимодействует и я так и не понял почему, нашел разве, что у тебя ошибку в том, что лаунчер нельзя называть так же, как и exe программы. В справке я тоже пытался разобраться, но будучи вооруженным одним лишь кривым переводом всей страницы мне это ничего не дало.
Сейчас еще попробовал, сначала думал дело в том, что нужен Custom.nsh (сразу скажу в нем ничего не понимаю, кроме как удалить ключи из HCLM), но оказалось что нет, так как лаунчер просто закрывается после запуска программы, то есть и реестр он после подчистить не сможет, это происходит и с твоим и с моим, его просто нет в диспетчере задач ээ. Не могу даже предположить, что не так..

Лайкнул Алик
Алик
Цитата: Алик от 08.02.2022, 18:34

Сидел, пытался, пытался, но не так не понял, как сделать так, чтобы ключи не оставались в реестре... запутался вовсе.. эх 😪
Приложу свою версию "портативной" программы, может кого не затруднит подсказать мне, что я не так сделал - буду благодарен
https://www.upload.ee/download/13870299/9bdf75bb796a1a892296/Portable_Defraggler.zip

Ошибка проста (это кстати есть в видео по portable avidemux, Хачатур специально взял 32/64 бит приложение), у вас запускается Dеfraggler 64 битный(в диспетчере видно), а в лаунчер.ini прописан путь запуска для 32 битного, а лаунчер Dеfraggler определяет что у вас 64 битная система и запускает 64битный exe, за которым лаунчер уже не следит, так как ничего не прописано)

Удалите все FileWrate, удалите все рег файлы, оставьте только с настройками(HKCU\SOFTWARE\Piriform) 1 файл, назовите его как хотите
в ini файле на реестре должно быть так.

Default=HKCU\SOFTWARE\Piriform
-=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\defraggler.exe
-=HKLM\SOFTWARE\WOW6432Node\Piriform

Ну дальше думаю додумаете).

Лайкнули syfle и Алик
syfleАлик
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
Цитата: syfle от 08.02.2022, 23:11

Всем привет!
Что бы не плодить темы задам вопрос здесь. Уже делал мелкие портативки и все получалось, и вот начал делать еще одну, но лаунчер не создается и я, хоть убейся, не понимаю почему. Может кто подскажет, что не так?

AppInfo.ini
[Details]
Name=Fallout 76 Quick Configuration
AppId=Fallout 76 Quick Configuration
Publisher=убийца_смерти2004
Language=Russian
Trademarks=убийца_смерти2004

[Version]
PackageVersion=1.9.5.0
DisplayVersion=1.9.5.0


Fallout 76 Quick Configuration.ini
[Launch]
ProgramExecutable="Fallout 76 Quick Configuration\Fo76ini.exe"
DirectoryMoveOk=yes

[Activate]
Registry=true

[DirectoriesMove]
"Fallout 76 Quick Configuration"="%USERPROFILE%\AppData\Local\Fallout 76 Quick Configuration"

[FilesMove]
Fo76ini.exe.log="%USERPROFILE%\AppData\Local\Microsoft\CLR_v4.0_32\UsageLogs"
updater.exe.log="%USERPROFILE%\AppData\Local\Microsoft\CLR_v4.0_32\UsageLogs"

[RegistryCleanupForce]
1=HKLM\SOFTWARE\Microsoft\Tracing\Fo76ini_RASAPI32
2=HKLM\SOFTWARE\Microsoft\Tracing\Fo76ini_RASMANCS
3=HKLM\SOFTWARE\Microsoft\Tracing\updater_RASAPI32
4=HKLM\SOFTWARE\Microsoft\Tracing\updater_RASMANCS


Custom.nsh
${SegmentFile}

${Segment.OnInit}
System::Call "kernel32::GetCurrentProcess()i.s"
System::Call "kernel32::IsWow64Process(is,*i.r0)"
StrCmp $0 0 +2
SetRegView 64
!macroend

${SegmentPrePrimary}
SetRegView 64
SetRegView LastUsed
!macroend

${SegmentPostPrimary}
SetRegView 64
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\Fo76ini_RASAPI32`
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\Fo76ini_RASMANCS`
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\updater_RASAPI32`
DeleteRegKey HKLM `SOFTWARE\Microsoft\Tracing\updater_RASMANCS`
Pop $0
SetRegView LastUsed
!macroend


Часть PortableApps.comLauncher.nsi
Name "Fallout 76 Quick Configuration"
OutFile "${PACKAGE}\Fallout 76 Quick Configuration.exe"
Icon "${PACKAGE}\App\AppInfo\appicon.ico"
Caption "Fallout 76 Quick Configuration"
VIProductVersion 1.9.5.0
VIAddVersionKey ProductName "Fallout 76 Quick Configuration"
VIAddVersionKey Comments "Fallout 76 Quick Configuration by убийца_смерти2004"
VIAddVersionKey CompanyName убийца_смерти2004
VIAddVersionKey LegalCopyright убийца_смерти2004
VIAddVersionKey FileDescription "Fallout 76 Quick Configuration by убийца_смерти2004"
VIAddVersionKey FileVersion 1.9.5.0
VIAddVersionKey ProductVersion 1.9.5.0
VIAddVersionKey InternalName "Fallout 76 Quick Configuration"
VIAddVersionKey LegalTrademarks "убийца_смерти2004"
VIAddVersionKey OriginalFilename "Fallout 76 Quick Configuration by убийца_смерти2004"

Ну или вот архив с программой и всеми ini (включая PortableApps.comLauncher.nsi)

Ваша ошибка, тоже по началу не понял, но потом дошло, кодировка вашего ini файла была не правильна, с припиской BOM, а нужно просто UTF 8, смените кодировку и все соберётся.

Лайкнули syfle и Алик
syfleАлик
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Привет! А вы не знаете, как с помощью WinRaR создать такой SFX-архив, чтобы тот, после распаковки, создавал в распакованной папке (место распаковки неизвестно) ярлычок exe-файла, расположенного в этой папке? Например: Game.exe распаковывается в папку Game, в которой создаётся ярлычок программы Boost.exe, расположенной в папке Game.

Спасибо! Разобрался самостоятельно)

Всем привет.
Пишу с целью помочь начинающим. Хочу сразу сказать, я не профи в создании портативок, делаю для себя и только при крайней необходимости. За год с лишним немного опыта накопилось и поэтому, хочу поделиться с вами, возможно кому-то поможет. 
1. Ищите на просторах интернета разного рода портативные сборки и смотрите в как они устроены, сравнивайте с другими сборками, запускайте с отслеживанием, старайтесь понять как прописанные скрипты работают. На данный момент у меня накопилась огромная коллекция портативок от разных сборщиков, которая мне помогает если я что-то забываю или не понимаю. Еще можно прочитать документацию из сайта portableapps, но лучше делать это после практических испытаний.
2. Есть программы, которые создают хвосты только при завершении, поэтому отслеживание нужно делать минимум два раза, первое при первом запуске, второе при втором. Потом нужно удалить все из системы, чтобы только в Total Uninstall было видно и заново запускаете программу. Чтобы по одному не удалять все из реестра, наведите мышку на HKEY_LOCAL_MACHINE и HKEY_USERS в Total Uninstall и нажмите на отменить ветвь, очень удобно.
3. Есть ключи реестра которые не поддаются portableapps, для их удаления или резервирования, нужно дополнительно сделать скрипт NSIS.
4. Нельзя ставить точки в названии лаунчера. Например лаунчер для Paint.NET, должен выглядеть PaintNETPortable.exe (как пример).

@moodak
Вы очень неудачно выбрали программу. Во первых, ее можно сделать портативной без лаунчера, достаточно поместить файл portable.dat в папку с программой, во вторых, некоторые ключи, лаунчер от Portableapps ни удалить, ни резервировать не может. И все же, я кое-что изменил в вашей портативной сборке https://www.upload.ee/files/13872462/Portable_Defraggler.zip.html

Лайкнули syfle и Алик
syfleАлик
Страница 1 из 7► 7