QT .dmg "No mountable file systems" on El Capitan. Backwards compatibility issue?
Using QT 5.9.2 & QTCreator I compiled in release mode today (XCode-Clang 64bit) then ran 'macdeployqt' from the command line to produce a *.dmg. It opened and ran fine on another OSX Sierra machine. However two 'El Capitan' computers can not mount the .dmg. During the 'verifying' process an error is thrown: "No Mountable File Systems".
I have a wrapper script to run 'macdeployqt' so I know the dmg and zip are being packaged exactly as they have been for months. This worked just fine the week before Christmas. My computer updated to Mac OS High Sierra 10.13.2 last Friday January 5th.
Are there any known new backwards-compatibility issues running 'macdeployqt' on High Sierra possibly causing the files to fail on El Capitan (10.11.6)? Has anyone else experienced this or can someone else please try to recreate it?
Can anyone please try to reproduce by creating a .dmg on High Sierra and mounting it on El Capitan? When trying to mount the .dmg with our QT program our users running El Capitan get an error message "The following disk images couldn't be opened. No Mountable file system"
Any simple QT program should be fine to test (or any program at all?). Then build a .dmg either using QT's 'macdeploy -dmg ' command OR simply using Apple's native:
hdiutil create fooImage.dmg -srcfolder /Users/USERNAME/test/bin/ -format UDZO -volname FooImage
I've been talking to QT Support amongst other resources and it may not be a strictly QT issue but just not sure. I only have one test machine. It would be very helpful if someone else could try to reproduce the problem and report what happens.
Solved! New filesystem APFS gotch'ya!
Apple has a new filesystem APFS and during the live-upgrade to High Sierra it will automatically in-place update your filesystem from HFS+ to APFS (on SSD drives). 'hdiutil' is the cmd tool for creating *.dmg files. The man page for hdiutil near option-flag "-srcfolder" reads:
"The filesystem type of the image volume will match that of the source as closely as possible unless overridden with -fs."
Documented in the most unintuitive place and avoiding searchable keywords .. your filesystem has silently been updated and implicitly the output of hdutil, and therefore 'macdeployqt' write APFS by default now. Sierra machines can read APFS but nothing older. Override this behavior and specify the older filesystem with: '-fs HFS+'
$ hdiutil create myFoo.dmg -fs HFS+ -srcfolder fooProject/bin/ -format UDZO -volname ProjectFoo
Mystery Solved! Hope this helps someone else.
Glad you found out and thanks for sharing !
Did you check the bug report system to see if it's something known ? If not please consider opening a feature request to add support for that option explaining what happened to you.
Bug Report: https://bugreports.qt.io/browse/QTBUG-65844
"macdeployqt produced .dmg on High Sierra not working on El Capitan"