<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ethell Enterprises Technology Consulting</title>
	<atom:link href="http://ethellenterprises.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ethellenterprises.com</link>
	<description>PHP, Java, Flex, Objective-C</description>
	<lastBuildDate>Wed, 02 May 2012 19:54:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Vagrant Disk Trashed When Upgrading VirtualBox Too Far</title>
		<link>http://ethellenterprises.com/2012/05/vagrant-disk-trashed-when-upgrading-virtualbox-too-far/</link>
		<comments>http://ethellenterprises.com/2012/05/vagrant-disk-trashed-when-upgrading-virtualbox-too-far/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:54:17 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[Vagrant]]></category>
		<category><![CDATA[VirtualBox]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=122</guid>
		<description><![CDATA[User beware&#8230; If you upgrade your VirtualBox too far ahead of the guest additions installed in Vagrant then you can end up with an instability that will trash your disks in the vagrant box and cause the file system to go read only. I kept having readonly filesystem problems and they were getting more and [...]]]></description>
			<content:encoded><![CDATA[<p>User beware&#8230; If you upgrade your VirtualBox too far ahead of the guest additions installed in Vagrant then you can end up with an instability that will trash your disks in the vagrant box and cause the file system to go read only. </p>
<p>I kept having readonly filesystem problems and they were getting more and more frequent. After combing the vagrant and virtualbox forums I saw some hints that it might be related to Guest Additions being too far out of date with the main VirtualBox version. After following the <a href="http://hedgehogshiatus.com/upgrade-virtualbox-guest-additions-in-a-vargr" title="Upgrade Vagrant Guest Additions">instructions here</a> to get my guest additions up to date I&#8217;ve had no further trouble with a readonly file system.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2012/05/vagrant-disk-trashed-when-upgrading-virtualbox-too-far/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automator Workflow to Reduce Large PDF Files</title>
		<link>http://ethellenterprises.com/2012/05/automator-workflow-to-reduce-large-pdf-files/</link>
		<comments>http://ethellenterprises.com/2012/05/automator-workflow-to-reduce-large-pdf-files/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:43:50 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=116</guid>
		<description><![CDATA[When I worked in the Linux world I used a variety of command line tools to help reduce the size of large PDF files. In the Mac OSX world I started looking at converting some of my same scripts over to run on OS X. There were several tools I needed to install via MacPorts [...]]]></description>
			<content:encoded><![CDATA[<p>When I worked in the Linux world I used a variety of command line tools to help reduce the size of large PDF files. In the Mac OSX world I started looking at converting some of my same scripts over to run on OS X. There were several tools I needed to install via MacPorts and as I started that process I realized there was probably a simpler way already built into OS X. Sure enough, there is: Automator.</p>
<p>To all you long time Apple users Automator is old news, but it was new to me. Here is how I created an Automator workflow (and then app) to reduce PDF large files down to size by shrinking the images inside the PDF.</p>
<p>Open Automator and choose to create a new application.<br />
From the Library choose PDFs.<br />
Drag the item labeled &#8220;Apply Quartz Filter to PDF Documents&#8221; to the workflow area.</p>
<p>I could choose the filter called &#8220;Reduce File Size&#8221; but I want to make some adjustments to it and the default filter is locked so click the Advanced options and from the list option-click (or two finger tap) the Reduce File Size filter and choose Duplicate.</p>
<p>Now spin down your copy of the filter and adjust the Image Sampling and Image Compression settings. For sampling I used 50% scale, 1024 max pixels, 128 min pixels and High quality. For compression I used JPEG mode and set the quality a few notches below Max.</p>
<p>Now in the filter dropdown at the top choose your Reduce File Size Copy filter.</p>
<p>I want the PDF to be opened after reduction so go to your library and choose Files and Folders and drag over the Open Finder Items action.</p>
<p>Make sure Open with is set to &#8220;Default Application&#8221;.</p>
<p>Now save your workflow and put your compiled app on your desktop or somewhere handy. Any time you need to reduce a PDF drop it on the app icon and your PDF will be reduced and opened in Preview.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2012/05/automator-workflow-to-reduce-large-pdf-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhoneGap + ChildBrowser &#8211; Opening all non-app links in ChildBrowser</title>
		<link>http://ethellenterprises.com/2012/02/phonegap-childbrowser-opening-all-non-app-links-in-childbrowser/</link>
		<comments>http://ethellenterprises.com/2012/02/phonegap-childbrowser-opening-all-non-app-links-in-childbrowser/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 11:51:07 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[PhoneGap]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=107</guid>
		<description><![CDATA[I&#8217;ve been working on a PhoneGap project with iPad as the target. Most of the app runs from an external site so after presenting local files to handle the login form and authentication the main webview then shifts to an external site where the rest of the code runs. We are using ChildBrowser to handle [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a PhoneGap project with iPad as the target. Most of the app runs from an external site so after presenting local files to handle the login form and authentication the main webview then shifts to an external site where the rest of the code runs.</p>
<p>We are using ChildBrowser to handle showing images and PDF files from the external site so that we can don&#8217;t have to include a navigation bar in our app. The ChildBrowser plugin helps us view those files without getting locked out of the original app. That&#8217;s just the background. Now we have a new problem. Many pages in this app link to external sites that are not part of the main application. We needed ChildBrowser to handle all non-app site requests automatically so that external sites would open in the popup and not replace the view in the main UIWebView of PhoneGap. Here is how we solved it:</p>
<p>We started with the PhoneGap.plist preferences file. In the ExternalHosts array within that plist we added all the possible host combinations that our app considers as local to the app. This app has about seven url host variants that could be used within the app so all of those should open in the main WebView. Any host not listed in ExternalHosts should open in the ChildBrowser. Keep in mind that to allow all external sites to open we still had to put * as an entry in ExternalHosts but this doesn&#8217;t affect the logic below.</p>
<p>In AppDelegate.m <em>didFinishLaunchingWithOptions</em> method I added this logic to load the PhoneGap.plist into a Dictionary and read the ExternalHosts into an array. If anyone can tell me this is already loaded somewhere and I could have skipped this step let me know in the comments:</p>
<p><code>NSDictionary *phoneGapPrefs = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"PhoneGap" ofType:@"plist"]];<br />
self.internalUrls = [[NSArray alloc] initWithArray:[phoneGapPrefs objectForKey:@"ExternalHosts"]];</code></p>
<p>I&#8217;m assuming you know how to create the <em>internalUrls</em> variable as an instance variable in AppDelegate.h. Now I have an array of all my internal host names so that any requests that don&#8217;t match that are loaded in ChildBrowser. Now we proceed down to the <em>shouldStartLoadWithRequest</em> method where I add this logic to check if we&#8217;re loading an external site (starts with http) and check if that site is part of our <em>internalUrls</em> array.</p>
<p><code><br />
if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) {<br />
    //This code will open any url that is not in the PhoneGap whitelist in Child Browser<br />
    if (![m3Urls containsObject:[url host]])<br />
    {<br />
        [theWebView sizeToFit];<br />
        ChildBrowserViewController* childBrowser = [ [ ChildBrowserViewController alloc ] initWithScale:FALSE ];<br />
        childBrowser.modalPresentationStyle = UIModalPresentationFormSheet;<br />
        childBrowser.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;   <br />
        [super.viewController presentModalViewController:childBrowser animated:YES ];   <br />
        NSString* urlString=[NSString stringWithFormat:@"%@",[url absoluteString]]; <br />
        [childBrowser loadURL:urlString];<br />
        [childBrowser release];<br />
        return NO;      <br />
    }<br />
    return YES;<br />
}</code></p>
<p>Now all urls that start with http or https as the scheme and are not in the ExternalHosts I&#8217;ve listed are considered external to our app and are loaded in ChildBrowser. At this point you might tell me that since I&#8217;m listing * as a valid ExternalHost I don&#8217;t need to list all the site-specific urls and you&#8217;d be correct as far as avoiding the whitelist. During initial development I didn&#8217;t even anticipate opening non-site urls so all I wanted to list were the site-specific urls for this app. Later on I added the * for allowing any url, but realize that listing all my internal app urls provided an easy way to accomplish my need to determine which urls were for my app and which were references to non-app sites.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2012/02/phonegap-childbrowser-opening-all-non-app-links-in-childbrowser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find parent form in jQuery</title>
		<link>http://ethellenterprises.com/2012/01/find-parent-form-in-jquery/</link>
		<comments>http://ethellenterprises.com/2012/01/find-parent-form-in-jquery/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 11:47:58 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=104</guid>
		<description><![CDATA[Needed to find the parent form of a form element. This answer on StackOverflow gave me the right answer.]]></description>
			<content:encoded><![CDATA[<p>Needed to find the parent form of a form element. <a title="StackOverflow discussion" href="http://stackoverflow.com/q/1621714/920564">This answer on StackOverflow</a> gave me the right answer.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2012/01/find-parent-form-in-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem with jQuery-UI Draggable and Form fields &#8211; Solved!</title>
		<link>http://ethellenterprises.com/2011/11/problem-with-jquery-ui-draggable-and-form-fields-solved/</link>
		<comments>http://ethellenterprises.com/2011/11/problem-with-jquery-ui-draggable-and-form-fields-solved/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 21:49:17 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=101</guid>
		<description><![CDATA[I&#8217;ve been using the Draggable functionality of jQuery-UI on a project and ran into a new problem. I needed to add form fields like SELECT and INPUT in my draggable div. Unfortunately, since my container itself is draggable it prevents clicking anything inside the container from being selected so I can&#8217;t choose items from the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using the Draggable functionality of jQuery-UI on a project and ran into a new problem. I needed to add form fields like SELECT and INPUT in my draggable div. Unfortunately, since my container itself is draggable it prevents clicking anything inside the container from being selected so I can&#8217;t choose items from the dropdown or focus on the input box to type text.</p>
<p>The solution is rather simple. Just add the appropriate selectors in the cancel option of Draggable. Actually, in my case I&#8217;ve migrated to Sortable so I added it there. Now my cancel option looks like: &#8220;select, input&#8221;. Works like a champ!</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2011/11/problem-with-jquery-ui-draggable-and-form-fields-solved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help! Where&#8217;s My App Switcher Gesture in Lion?!</title>
		<link>http://ethellenterprises.com/2011/10/help-wheres-my-app-switcher-gesture-in-lion/</link>
		<comments>http://ethellenterprises.com/2011/10/help-wheres-my-app-switcher-gesture-in-lion/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 10:12:52 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=94</guid>
		<description><![CDATA[I rarely upgrade any OS when it is first released. This was always my practice with Windows, then Linux and now with OS X. So when Lion was released back in the Summer I passed on the chance to be first in line. Then 10.7.1 came out and I still waited. But with the arrival [...]]]></description>
			<content:encoded><![CDATA[<p>I rarely upgrade any OS when it is first released. This was always my practice with Windows, then Linux and now with OS X. So when Lion was released back in the Summer I passed on the chance to be first in line. Then 10.7.1 came out and I still waited. But with the arrival of iOS 5 and iCloud it was time to upgrade in order to take advantage of PhotoStream among other things.</p>
<p>I&#8217;m a huge fan of trackpad gestures and so I was pretty happy that Lion expanded the use of gestures, but I was shocked that my most often used gesture from Snow Leopard, the four finger swipe to open the Cmd-Tab application switcher, was gone. Cmd-Tab still opens the old application switcher but the familiar four finger swipe is gone and now there is a three finger swipe that invokes a switch between the new Lion desktops and full screen apps. So unless I run all my apps full screen, the switcher just goes between Dashboard and the main Desktop. Not what I want at all!</p>
<p>After half a week of frustration and searching for a solution I found <a title="BetterTouchTools web site" href="http://www.boastr.de/">BetterTouchTool</a>. BTT gives me back everything I lost and more! I left the three-finger swipe alone and now have a four-finger swipe that opens up my long lost Application Switcher. BTT doesn&#8217;t stop there, however. It has an advanced application switcher where I can start the swipe and leave one finger on the pad and while still touching the pad, move the cursor to my desired application and then let go of the pad. With a few seconds of training my brain, I now switch applications faster than I ever did under Snow Leopard.</p>
<p>If you&#8217;re longing for more out of your trackpad or magic mouse, you must give BetterTouchTool a try. At the very least it restores lost functionality to Lion, but I think you&#8217;ll find it adds even more possibilities to gesturing than you had previously imagined.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2011/10/help-wheres-my-app-switcher-gesture-in-lion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DropBox vs SugarSync &#8211; Or why I&#8217;m keeping DropBox</title>
		<link>http://ethellenterprises.com/2011/07/dropbox-vs-sugarsync-or-why-im-keeping-dropbox/</link>
		<comments>http://ethellenterprises.com/2011/07/dropbox-vs-sugarsync-or-why-im-keeping-dropbox/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 10:47:46 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=90</guid>
		<description><![CDATA[I&#8217;ve used DropBox for quite some time now and loved it. When I needed more default storage, however, a friend pointed me in the direction of SugarSync. SugarSync offers a range of different features, but my clear favorite is the ability to flag any folder on my machine as a sync folder. No longer do [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve used <a title="DropBox" href="http://www.dropbox.com">DropBox</a> for quite some time now and loved it. When I needed more default storage, however, a friend pointed me in the direction of <a title="SugarSync" href="http://www.sugarsync.com/">SugarSync</a>. SugarSync offers a range of different features, but my clear favorite is the ability to flag any folder on my machine as a sync folder. No longer do I have to put my sync files in the DropBox folder, I can sync any of my standard folders and leave them in place.</p>
<p>SugarSync also maintains a distinction between which files came from which of my computers or mobile devices so if I want files specifically from my laptop instead of my desktop the mobile clients show that distinction.</p>
<p>Combine that with a base storage allocation of 5GB and SugarSync looks like the clear winner. Almost.</p>
<p>After two months of using SugarSync I still find myself using DropBox far more often in my day to day routine and there is one simple reason: mobile integration. It seems every app that I care about on my iPad and iPhone allows for DropBox interaction. If I want to work in Office2HD for example or PrintCentral or a myriad of other apps, all of my files have to be in DropBox. For reasons I haven&#8217;t explored, SugarSync does not have built-in support in any of the apps I use.</p>
<p>So while it is wonderful to have more storage and sync any folder on my machine, when I want to edit files in my mobile devices DropBox is the go to storage medium. Thus here I am two months later still using DropBox as my mobile storage medium and SugarSync as my cloud backup medium.</p>
<p>Maybe <a href="http://www.apple.com/icloud/">iCloud</a> will change all that but somehow I still think DropBox is going to be my the storage medium of choice for some time to come. We&#8217;ll see.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2011/07/dropbox-vs-sugarsync-or-why-im-keeping-dropbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash waning, HTML waxing?</title>
		<link>http://ethellenterprises.com/2011/06/flash-waning-html-waxing/</link>
		<comments>http://ethellenterprises.com/2011/06/flash-waning-html-waxing/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 10:46:10 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=87</guid>
		<description><![CDATA[Just an example from my own development contracts that Flash apps appear to be on the wane. I spent 3 1/2 years developing a Flash application using Adobe&#8217;s Flex technology. The app went live less than a year after we started and we spent the next 2 1/2 years adding features and improving the application. [...]]]></description>
			<content:encoded><![CDATA[<p>Just an example from my own development contracts that Flash apps appear to be on the wane. I spent 3 1/2 years developing a Flash application using Adobe&#8217;s Flex technology. The app went live less than a year after we started and we spent the next 2 1/2 years adding features and improving the application. Then in the Fall of 2010 the customer asked how quickly we could rewrite the entire thing in html and javascript!</p>
<p>It took us (me and their own inhouse development staff) three months to rewrite the entire app in html+javascript to a beta version level. One of the key motivations was having a desktop version that worked on the iPad and having a mobile version that shared the same basic codebase as the desktop.</p>
<p>Now that we&#8217;re basically finished with the app and polishing the mobile version to work on iOS, Android, etc. it is hard to remember ever using the app in Flex. As much as I hate to admit it, HTML + AJAX has been far faster and less cumbersome to develop for than Flex. We had a very good Flex codebase using very good design patterns. The code was centered around the Cairngorm framework and everything was well modeled in the MVC2 pattern, but in the end, lack of developers with thorough Flex knowledge and desire to have it run on the iPad (and other tablets) drove us to html and javascript.</p>
<p>No looking back now.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2011/06/flash-waning-html-waxing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursive Stored Functions in MySQL</title>
		<link>http://ethellenterprises.com/2011/05/recursive-stored-functions-in-mysql/</link>
		<comments>http://ethellenterprises.com/2011/05/recursive-stored-functions-in-mysql/#comments</comments>
		<pubDate>Sat, 28 May 2011 20:12:38 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=76</guid>
		<description><![CDATA[I have only recently started working heavily with stored procedures and functions in MySQL. After years in the Oracle world with advanced stored procedures, functions and packages, I&#8217;ve had to come to grips with the shortcomings of MySQL. One of those is recursive functions. MySQL allows recursive stored procedures, but not recursive stored functions. Here [...]]]></description>
			<content:encoded><![CDATA[<p>I have only recently started working heavily with stored procedures and functions in MySQL. After years in the Oracle world with advanced stored procedures, functions and packages, I&#8217;ve had to come to grips with the shortcomings of MySQL. One of those is recursive functions. MySQL allows recursive stored procedures, but not recursive stored functions. Here is my workaround&#8230;</p>
<p>First create your main logic as a stored procedure with an OUT variable:</p>
<pre><code>DELIMITER |
CREATE PROCEDURE my_recursive_proc(a_some_parameter INTEGER, OUT a_result INTEGER)
BEGIN
    DECLARE v_my_number INTEGER DEFAULT 0;
    -- Have to set max_sp_recursion_depth inside the stored procedure
    SET max_sp_recursion_depth := 20;
    SET v_my_number := v_my_number + a_some_parameter;
    IF v_my_number < 100 THEN
        CALL my_recursive_proc(10, v_my_number);
    END IF;
    SET a_result := v_my_number;
END |
DELIMITER ;</code></pre>
<p>So now I have a recursive procedure that calls itself adding 10 to the initial number until we get to 100. In the real world we'd be doing something serious like descending through related child records until we find some search result. What I really want now is a function I can call in a WHERE clause somewhere.</p>
<p>Here's all we have to do:</p>
<pre><code>CREATE FUNCTION my_recursive_func(a_some_parameter INTEGER)
    RETURNS INTEGER
BEGIN
    DECLARE v_result INTEGER DEFAULT 0;
    CALL my_recursive_proc(a_some_parameter, v_result);
    RETURN v_result;
END |
DELIMITER ;</code></pre>
<p>Now in my SELECT statements I can do:<br />
<code>SELECT * FROM my_table WHERE my_recursive_func(some_column) = 100;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2011/05/recursive-stored-functions-in-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhoneGap, BlackBerry and Windows 7 &#8211; Access Denied!</title>
		<link>http://ethellenterprises.com/2011/05/phonegap-blackberry-and-windows-7-access-denied/</link>
		<comments>http://ethellenterprises.com/2011/05/phonegap-blackberry-and-windows-7-access-denied/#comments</comments>
		<pubDate>Wed, 04 May 2011 10:45:14 +0000</pubDate>
		<dc:creator>David Ethell</dc:creator>
				<category><![CDATA[PhoneGap]]></category>

		<guid isPermaLink="false">http://ethellenterprises.com/?p=73</guid>
		<description><![CDATA[I have no idea why Windows 7 (and Vista) have decided that an Admin level user is not allowed to write files into Program Files, but apparently Windows knows better than I do what should happen in that folder. Unfortunately, if you working with PhoneGap and building your app for BlackBerry, the default install locations [...]]]></description>
			<content:encoded><![CDATA[<p>I have no idea why Windows 7 (and Vista) have decided that an Admin level user is not allowed to write files into Program Files, but apparently Windows knows better than I do what should happen in that folder.</p>
<p>Unfortunately, if you working with PhoneGap and building your app for BlackBerry, the default install locations for the BlackBerry WebWorks Packager is under Program Files and the PhoneGap build scripts copy the compiled COD files into the appropriate simulator folder under the webworks\simpacks folder.</p>
<p>After trying in vain to unset the readonly permissions on the simpacks folder under my normal account (which has admin privileges) I finally tried enabling the administrator account, logging in as administrator and then unsetting readonly on that folder. That didn&#8217;t work either. The Administrator user is able to run the build scripts just fine, but when I log out and back in as my normal user the folders are back to read only.</p>
<p>I even tried making my user the owner of those folders (per a blog post somewhere) and that didn&#8217;t work either. The PhoneGap build script (and just a regular copy command) get &#8220;access denied&#8221;.</p>
<p>I finally realize I just needed to run CMD as Administrator and my builds would work. So if you need to run PhoneGap build scripts in Windows 7 as a real user, just launch the Command Prompt as Administrator (right click on the Command Prompt icon and choose Run as Administrator). Now your builds will happily copy the compiled files to the simulator folder under Program Files.</p>
]]></content:encoded>
			<wfw:commentRss>http://ethellenterprises.com/2011/05/phonegap-blackberry-and-windows-7-access-denied/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

