Post

Replies

Boosts

Views

Activity

Max OS X App Bundle Framework folder
Hi, the documentation says that an application bundle for Mac OS X can have a Frameworks folder within Contents. Using a framework for console applications (no bundle) and GUI applications (bundle), I cannot load the console applications anymore on Ventura. Prior to Ventora I have tested and ran both on Mojave or earlier - I am not sure. To fix the issue, I have moved the frameworks within the application bundle to match the rpath for /Users/lothar/Library/Frameworks when I place the console into /Users/lothar/bin, the same rpath for application bundles works for those within the bin folder. Can I publish an application bundle with that modified layout or do I have to expect getting problems and do rather a Symlink pointing from /Users/lothar/Frameworks to /Users/lothar/Library/Frameworks? Thanks, Lothar
1
0
288
Oct ’24
Ported app to M2 and need advice to notarize
Hi, I am totally unaware of the new notarize mechanism and generally starting to sign my application after having ported it to M2. I want to distribute the app without App Store - yet. My application is an open source tool or better a more complex tool for the software development that contains dylibs and frameworks all within an app bundle. I am using wxWidgets and stumbled upon the build process using install_name_tool temporary for each bundle and probably all libraries that I place into the application bundle to have an @executable_path and not an absolute path. That works so far, but the notarize tool or better checking it with spctl rejects it. A further test with spctl --assess or the like, I have the command lost, shows that are resources missing and I have a hint to use @rpath entries to be added. I am using makefiles and a custom make system where I build up the make commands for each target. I won't modify the rules for each target type, if I could do this in a post build step for all the contents of the app bundle. I have therefore a shell script that handles that additional task yet until code signing and it looks like as follows: #!/bin/sh # Copies together files for the Mac OS X application bundle and created a disk image export prefix=$1 export VERSION=1.3.4 cp ../../../Database/*.sql wxWrapper.app/Contents/Resources cp splash.png wxWrapper.app/Contents/Resources mkdir wxWrapper.app/Contents/Resources/XSLT cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/include wxWrapper.app/Contents/Resources/XSLT/include cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/DMFToXMI wxWrapper.app/Contents/Resources/XSLT/DMFToXMI cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/XMIToDMF wxWrapper.app/Contents/Resources/XSLT/XMIToDMF cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/lbDMFDataViewModel wxWrapper.app/Contents/Resources/XSLT/lbDMFDataViewModel cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/lbDMFFixedFormular wxWrapper.app/Contents/Resources/XSLT/lbDMFFixedFormular cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/TurboVision wxWrapper.app/Contents/Resources/XSLT/TurboVision cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/wxActiveRecords wxWrapper.app/Contents/Resources/XSLT/wxActiveRecords cp -R ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/wxLua wxWrapper.app/Contents/Resources/XSLT/wxLua cp ../../../AppDevelopmentDemo/DynamicApp/XSLT_Templates/include/XMISettingsTemplate.xsl wxWrapper.app/Contents/Resources/XSLT/XMIToDMF/XMISettings.xsl cp -R ../../../AppDevelopmentDemo/DynamicApp/UMLSamples wxWrapper.app/Contents/Resources mkdir wxWrapper.app/Contents/Resources/toolbarimages # UGLY! Using environment that also is properly defined while jenkins build is better cp -R $prefix/lib wxWrapper.app/Contents cp -R $prefix/plugins wxWrapper.app/Contents/Resources # How to access them? cp toolbarimages/*.xpm wxWrapper.app/Contents/Resources/toolbarimages cp toolbarimages/*.png wxWrapper.app/Contents/Resources/toolbarimages #cp -R `wx-config --prefix`/lib/lib`wx-config --basename`-`wx-config --release`.0.6.0.dylib wxWrapper.app/Contents/lib #cp -R `wx-config --prefix`/lib/lib`wx-config --basename`-`wx-config --release`.0.dylib wxWrapper.app/Contents/lib cp -R `wx-config --prefix`/lib/lib`wx-config --basename`-`wx-config --release`.*.dylib wxWrapper.app/Contents/lib cp -R `wx-config --prefix`/lib/lib`wx-config --basename`-`wx-config --release`.dylib wxWrapper.app/Contents/lib cp Info.plist wxWrapper.app/Contents codesign -f -v -s "Lothar Behrens" wxWrapper.app/Contents/Frameworks/lbHook.framework/Versions/A/lbHook codesign -f -v -s "Lothar Behrens" wxWrapper.app/Contents/Frameworks/wxJson.framework/Versions/A/wxJson codesign -f -v -s "Lothar Behrens" wxWrapper.app/Contents/Frameworks/wxWrapperDLL.framework/Versions/A/wxWrapperDLL codesign -f -v -s "Lothar Behrens" wxWrapper.app/Contents/lib/* codesign -f -v -s "Lothar Behrens" wxWrapper.app/Contents/Resources/plugins/* xattr -cr wxWrapper.app codesign -f -v -s "Lothar Behrens" wxWrapper.app/Contents/MacOS/wxWrapper #codesign -dvv wxWrapper.app codesign -f -v -s "Lothar Behrens" wxWrapper.app #spctl -a -t exec -vvvv wxWrapper.app #codesign -dvv wxWrapper.app #codesign -vv --deep-verify wxWrapper.app # Creating a new diskimage hdiutil create -ov -size 200m -volname lbDMF-$VERSION lbDMF-$VERSION-`uname -p`.dmg -fs HFS+ sleep 5 hdiutil attach lbDMF-$VERSION-`uname -p`.dmg # Copy stuff #mkdir /Volumes/lbDMF-$VERSION/`uname -p` #cp -R wxWrapper.app /Volumes/lbDMF-$VERSION/`uname -p` cp -R wxWrapper.app /Volumes/lbDMF-$VERSION mkdir /Volumes/lbDMF-$VERSION/toolbarimages cp toolbarimages/*.xpm /Volumes/lbDMF-$VERSION/toolbarimages cp toolbarimages/*.png /Volumes/lbDMF-$VERSION/toolbarimages cp ../../../COPYING /Volumes/lbDMF-$VERSION cp ../../../license-bindist.txt /Volumes/lbDMF-$VERSION cp ../../../AppDevelopmentDemo/DynamicApp/Doc/ApplicationprototypingDokumentation.pdf /Volumes/lbDMF-$VERSION/ # Copying templates to an accessable place cp -R wxWrapper.app/Contents/Resources/XSLT /Volumes/lbDMF-$VERSION/ cp -R wxWrapper.app/Contents/Resources/UMLSamples /Volumes/lbDMF-$VERSION/ mkdir /Volumes/lbDMF-$VERSION/.lbDMF cp -R wxWrapper.app/Contents/Resources/*.sql /Volumes/lbDMF-$VERSION/.lbDMF cat <<EOF >> /Volumes/lbDMF-$VERSION/Readme.txt Dear Mac user! ... Thanks Lothar Behrens EOF rm -rf `find /Volumes/lbDMF-$VERSION -name CVS -print` hdiutil detach /Volumes/lbDMF-$VERSION rm lbDMF-$VERSION lbDMF-$VERSION-`uname -p`.dmg.zip zip lbDMF.dmg.zip lbDMF-$VERSION lbDMF-$VERSION-`uname -p`.dmg mv lbDMF.dmg.zip lbDMF-$VERSION-`uname -p`.dmg.zip code-block Testing the app bundle shows this: spctl --assess -vvvvv --type execute wxWrapper.app wxWrapper.app: rejected origin=Apple Development: Lothar Behrens (********) I need some help where to insert a proper notary tool command and a proper check before uploading that I can see, if I could do so. Despite that I haven't had an active developer ID, I have that now and need to setup the Developer ID Distribution certificate into the keychain. So I plan to add the @rpath values per framework/dylib/so as additional commands into the shell script above. But how can I best verify for successful usage of notary tool? Any help? Thanks, Lothar
7
0
417
Jul ’24