I was just looking at the PortableApps Gramps modifications. (Hoping to start sharing Gramps research with a couple sibs & cousins who won’t install ANYthing) And some of what I learned was worth sharing with the Linux & macOS developers.
The PortableApp tool INI files have noted each hardcoded filepath that might have to be rewritten every time the application is started. (This is because a USB device may be assigned a different logical drive each time it is plugged in OR the whole folder might have been dragged to a new folder. So the paths have to revalidated & tweaked each time BEFORE launch.)
Might this information present an opportunity to make USB friendly versions versions of the Linux and macOS Gramps? Maybe it would be possible to have all three OS versions on a USB thumbdrive. With a sublauncher that recognizes the OS and calls the right installation but uses a common Tree database and media collection.
Given GrampsPortable folder is installed at the top level of a USB drive assigned the letter ‘G:’
G:\GrampsPortable\App\AppInfo\Launcher\GrampsPortable.ini
[Launch]
ProgramExecutable=Gramps\grampsw.exe
WorkingDirectory=%PAL:AppDir%\Gramps
DirectoryMoveOK=yes
SupportsUNC=yes
SplashTime=12500
[Environment]
PATH="%PAL:AppDir%\Gramps";%PATH%
GRAMPSHOME=%PAL:DataDir%\settings
GRAMPSDIR=%PAL:AppDir%\Gramps
LANG=%PAL:LanguageCustom%.UTF-8
LANGUAGE=%PAL:LanguageCustom%.UTF-8
[FilesMove]
settings\recently-used.xbel=%LOCALAPPDATA%
[Language]
Base=%PortableApps.comLocaleglibc%
CheckIfExists=%PAL:AppDir%\Gramps\share\locale\%PAL:LanguageCustom%\*.*
DefaultIfNotExists=en_US
[LanguageFile]
Type=INI
File=%PAL:DataDir%\settings\GrampsPortableSettings.ini
Section=GrampsPortableSettings
Key=Language
[FileWrite1]
Type=Replace
File=%PAL:DataDir%\settings\gramps\gramps51\gramps.ini
Find=%PAL:LastDrive%%PAL:LastPackagePartialDir:DoubleBackslash%\\
Replace=%PAL:Drive%%PAL:PackagePartialDir:DoubleBackslash%\\
[FileWrite2]
Type=Replace
File=%PAL:DataDir%\settings\gramps\gramps51\gramps.ini
Find=%PAL:LastDrive%%PAL:LastPortableAppsBaseDir:DoubleBackslash%\\
Replace=%PAL:Drive%%PAL:PortableAppsBaseDir:DoubleBackslash%\\
[FileWrite3]
Type=Replace
File=%PAL:DataDir%\settings\gramps\gramps51\gramps.ini
Find=%PAL:LastDrive%\\
Replace=%PAL:Drive%\\
[FileWrite4]
Type=Replace
File=%PAL:DataDir%\settings\gramps\recent-files-gramps.xml
Find=%PAL:LastDrive%%PAL:LastPackagePartialDir%\
Replace=%PAL:Drive%%PAL:PackagePartialDir%\
[FileWrite5]
Type=Replace
File=%PAL:DataDir%\settings\gramps\recent-files-gramps.xml
Find=%PAL:LastDrive%%PAL:LastPortableAppsBaseDir%\
Replace=%PAL:Drive%%PAL:PortableAppsBaseDir%\
[FileWrite6]
Type=Replace
File=%PAL:DataDir%\settings\gramps\recent-files-gramps.xml
Find=%PAL:LastDrive%\
Replace=%PAL:Drive%\
[FileWrite7]
Type=Replace
File=%PAL:DataDir%\settings\gramps\report_options.xml
Find=%PAL:LastDrive%%PAL:LastPackagePartialDir%\
Replace=%PAL:Drive%%PAL:PackagePartialDir%\
[FileWrite8]
Type=Replace
File=%PAL:DataDir%\settings\gramps\report_options.xml
Find=%PAL:LastDrive%%PAL:LastPortableAppsBaseDir%\
Replace=%PAL:Drive%%PAL:PortableAppsBaseDir%\
[FileWrite9]
Type=Replace
File=%PAL:DataDir%\settings\gramps\report_options.xml
Find=%PAL:LastDrive%\
Replace=%PAL:Drive%\
[FileWrite10]
Type=Replace
File=%PAL:DataDir%\settings\gramps\gramps34\gramps.ini
Find=%PAL:LastDrive%%PAL:LastPackagePartialDir:DoubleBackslash%\\
Replace=%PAL:Drive%%PAL:PackagePartialDir:DoubleBackslash%\\
[FileWrite11]
Type=Replace
File=%PAL:DataDir%\settings\gramps\gramps34\gramps.ini
Find=%PAL:LastDrive%%PAL:LastPortableAppsBaseDir:DoubleBackslash%\\
Replace=%PAL:Drive%%PAL:PortableAppsBaseDir:DoubleBackslash%\\
[FileWrite12]
Type=Replace
File=%PAL:DataDir%\settings\gramps\gramps34\gramps.ini
Find=%PAL:LastDrive%\\
Replace=%PAL:Drive%\\
G:\GrampsPortable\App\AppInfo\appinfo.ini
[Format]
Type=PortableAppsFormat
Version=3.5
[Details]
Name=Gramps Portable
AppId=GrampsPortable
Publisher=AppName Team & PortableApps.com
Homepage=https://portableapps.com/apps/education/gramps_portable
Donate=https://gramps-project.org/blog/contribute/
Category=Education
Description=Genealogy
Language=Multilingual
InstallType=English
[License]
Shareable=true
OpenSource=true
Freeware=true
CommercialUse=true
[Version]
PackageVersion=5.1.3.0
DisplayVersion=5.1.3
[Control]
Icons=1
Start=GrampsPortable.exe
BaseAppID=%BASELAUNCHERPATH%\App\Gramps\grampsw.exe
G:\GrampsPortable\App\AppInfo\installer.ini
[FilesToRemove]
RemoveFile1=Data\settings\gramps\thumb\*.*
[OptionalComponents]
OptionalComponents=true
OptionalDirectory1=App\Gramps\share\locale
OptionalDirectory2=App\Gramps\share\enchant\myspell-all