On Mon, Oct 27, 2014 at 2:20 PM, Justin Mclean <jus...@classsoftware.com> wrote:
> Hi, > > > I don’t remember what it was first time I ever ran the Installer, but > lately (on Mac) it seems to offer the last > > folder I chose, or the parent of that folder. Could that be leading more > > folks to pick folders that aren’t writeable? > > 99%+ of these errors are on windows. It is possible to get the issue on > OSX you have to go out of your way to select a folder that isn't writable. > (eg /System) > > My guess is that windows people like to put programs into their "Program > Files" directory which only Administrators can write to on modern versions > of windows. > > Adobe Flash Builder gets installed into C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\ That comes with a 'sdks' folder with 4.6.0 and 3.6.0 pre-installed. Naturally, folks want to add new SDKs into this directory to keep all the SDKs organized. The problem is that the C:\Program Files directory is writable only with Admin access by default. One way to address this issue is to inform the user that the selected directory is not writable. I believe this is the fix Neil has submitted. A more correct way would be to detect the current user's UAC level and alerting the user that UAC needs to raised to install in the selected directory. [1] The best way would be show the windows UAC dialog prompting the user to allow the write operation. I don't think it is possible with AIR directly. So, we will need to write a small script and invoke it via a nativeprocess. The elevated UAC will be valid until the Installer is closed. The problem would be if the user does not have the Admin username/password which they will have to enter to proceed with the installation. If they don't have it, we should direct them to use a lower privileged directory such as c:/temp or c:/users/{username}/AppData/Roaming/{FlexInstallationDir} Of course, we can chose to skip all this by automatically selecting a default directory such as c:/Users/{username}/AppData/Roaming/{FlexInstallationDir} This path should be pretty straightforward to retrieve from the AIR apis. Thanks, Om [1] http://www.itwriting.com/blog/196-programmatically-detecting-whether-uac-is-enabled.html