Bug 14156 - Xamarin.Mac-built packages do not install on Snow Leopard
Summary: Xamarin.Mac-built packages do not install on Snow Leopard
Status: RESOLVED NOT_ON_ROADMAP
Alias: None
Product: Xamarin Studio
Classification: Desktop
Component: Mac Add-in ()
Version: unspecified
Hardware: PC Mac OS
: --- normal
Target Milestone: ---
Assignee: Aaron Bockover [MSFT]
URL:
Depends on:
Blocks:
 
Reported: 2013-08-21 14:39 UTC by PJ
Modified: 2015-04-09 11:56 UTC (History)
4 users (show)

Tags:
Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED NOT_ON_ROADMAP

Description PJ 2013-08-21 14:39:05 UTC
Steps to reproduce:

1) Convert a mac-sample to Xammac (I used OpenGLViewSample and NSComboBoxTest, for example)
2) Enable the settings 'Include the Mono runtime in the application bundle' and 'Create installer package'
3) Build.
4) Transfer the built .pkg to a Snow Leopard machine
5) Attempt to open the .pkg and install the app

Expected behavior:

Installer should successfully start and begin the installation process

Actual behavior:

Installer shows error  "com.apple.installer.pagecontroller error -1" http://screencast.com/t/g0jX7AFO0R

Console shows the following messages:

8/21/13 2:22:47 PM	Installer[1374]	This distribution script is too new (Requires spec version >= 2, current is 1.058)
8/21/13 2:22:47 PM	Installer[1374]	Error parsing distribution script from data
8/21/13 2:22:47 PM	Installer[1374]	Invalid Distribution File/Package


Machine building:
OSX 10.8.4
Xamarin.Mac 1.6.9
XS 4.0.12
Mono 3.2.2 a0fc6ba

Machine with failure to install:
OSX 10.6.3
No Xamarin or Mono products installed
Comment 2 PJ 2013-08-21 17:11:48 UTC
Yeah, I'm reporting that a packaged Xamarin.Mac app doesn't install (on a Snow Leopard machine without Xamarin.Mac and all that).
Comment 3 PJ 2013-08-21 17:13:01 UTC
(And the minimum target in these apps was 10.6, so we should be fine with that set and the included mono runtime, AFAIK).
Comment 4 Sebastien Pouliot 2013-08-22 10:55:29 UTC
_interesting_ it seems the package (.pkg) itself is problematic :'( and I'm not sure what/how the .pkg is done...

What happens if you copy the .app directory ? (my original curiousity was about the application, not the installer ;-)
Comment 5 Aaron Bockover [MSFT] 2013-08-22 11:56:00 UTC
So the installer itself is just created with this command inside the XS addin:

productbuild --component foo.app /Applications foo.pkg

I suspect we may have to pass other flags to productbuild or specify some kind of configuration plist for SL compat. I'll look into it.

From what I understand PJ, you're just saying that the installer itself is failing to open/install? Can you confirm Sebastien's request to see if the .app bundle itself runs on SL (as it should, assuming the Deployment Target version is 10.6, and we default to 10.6).
Comment 6 PJ 2013-08-22 12:36:54 UTC
Yes the same projects' .apps transferred open up just fine (albeit, a bit slowly, but it's a slower VM).
Comment 7 Jeffrey Stedfast 2014-01-15 17:58:43 UTC
According to the man page for productbuild, you can specify a "Pre-Install Requirements Property List"  (previously called the "Product Definition File") which allows you to specify minimum OS versions among other things using the `--product' switch.

We already have a UI for selecting the "Product Definition" file which gets passed to the --product switch, so we might not have to do anything other than perhaps document that users will need to do this.
Comment 8 Jeffrey Stedfast 2014-01-15 18:02:57 UTC
Alternatively, we could perhaps generate a default plist file with the minimum OS version set to the version specified in the Info.plist?

The problem with that is that the sdk version only allows us 10.X and not 10.X.Y

     At the top level, this property list is a dictionary, with the following keys:

     Key                       Description
     os                        Minimum allowable OS versions (array of strings)
     arch                      Supported architectures (array of strings)
     ram                       Minimum required RAM in gigabytes (real)
     bundle                    Specific bundles that must exist on the system (array of dictionaries)
     all-bundles               Are all of the bundles specified required? (Boolean)
     gl-renderer               Required OpenGL capabilities (string)
     cl-device                 Required OpenCL capabilities (string)
     single-graphics-device    Must OpenGL and OpenCL requirements be met by a single device? (Boolean)
     home                      Should installation be allowed in user home directory? (Boolean)

     o   The os key defines one or more minimum system versions. You might have multiple versions if a cer-
         tain OS update is required for a given major OS version. For example, if you specify 10.5.4 and
         10.6.2, Leopard would be allowed from 10.5.4 up, and Snow Leopard from 10.6.2 up, but 10.6 and
         10.6.1 would be rejected. There is no upper-bound associated with the highest value given.

         NOTE: Some of the other requirements imply their own minimum system versions, which may override
         the values set here. This is noted below where applicable.

     o   The arch key specifies the supported architectures, e.g. i386 and/or x86_64. Note that i386 allows
         both 32- and 64-bit systems, but if you specify only x86_64, a 64-bit system is required.
Comment 9 Chris Hamons 2015-04-09 11:56:58 UTC
We're dropping 10.6 support in XM 2.0