Dear colleagues
No matter how hard I try I can’t get large files ~20Gb to be processed correctly by the productbuild At least that’s what I think.
I use —large-payload option
-
Product build actively complains with warnings about 12,0 as min version of macOS. The issue here is that in app plist 12.4 is set as min version. PRE-INSTALL REQUIREMENTS PROPERTY LIST should apparently be used for this but no possible combo of options can fix this warning. The warning have far reaching consequences. More on this later
-
All the utilities even Apple ones like Trandporter unpack the pkg absolutely wrong. When I check temporary expanded archive my 20gb file turns into 8Gb!
-
i still have to check installer way whether it unpacks correctly.
-
AppStore submission immediately rejects the pkg because lsmin key is 12.4 while package min is 12.0. The thing is I never ever used 12.0 anywhere.
so to summarize.
- Cant submit large payloads archive
- Can’t extract it either
what to do ?
Best regards
Ok I figured it out. I still haven't checked the AppStore process but at least all checks pass now It's MUCH more complex than product build, but product build itself is buggy.
So.
- Prepare your .app with HUUUGE file (> 8Gb). Sign it correctly, do everything as usual!
- pkgbuild --identifier <APP_ID> --large-payload --compression latest --min-os-version 12.4 --root <root_with_app_inside> <APP_ID>.pkg
Make the following 'Distribution' file
<installer-gui-script minSpecVersion="2"> <pkg-ref id="com.***"> <bundle-version> <bundle CFBundleShortVersionString="1.0.1" CFBundleVersion="23" id="com.***" path="MY.app"/> </bundle-version> </pkg-ref> <product id="com.***" version="1.0.1"/> <title>MY</title> <options customize="never" require-scripts="false" hostArchitectures="arm64,x86_64"/> <volume-check> <allowed-os-versions> <os-version min="12.4"/> </allowed-os-versions> </volume-check> <choices-outline> <line choice="default"> <line choice="com.***"/> </line> </choices-outline> <choice id="default" title="MY" versStr="1.0.1"/> <choice id="com.***" title="MY" visible="false" customLocation="/Applications"> <pkg-ref id="com.***">com.***.pkg</pkg-ref> </choice> </installer-gui-script>
- productbuild --sign "Signer" --distribution ./Distribution --package-path ~ Final.pkg
Something like that
Your package definitely will be 1) compressed fine 2) smaller 3) with super large file
Feed the stuff to the Transporter. Don't forget to adjust Distribution with correct version, id's etc.
Have fun! I certainly had it