Getting an Enyo 1.0 App built for Windows Desktop

edited January 2012 in Packaging Apps
So far, the platform that (to me) has received the most interest is Windows Desktop. I suspect it is due to the overwhelming number of people using Windows. This quick and basic guide will get your Enyo App running on Windows in no time flat! As a bonus, you get a Meego Netbook compatible app too.

First, you have your Enyo app all built and ready. If you've already developed it for webOS, then this will take a whopping 2 minutes.

Using the Intel AppUp Encapsultaor, it will take a web app (aka an Enyo app) and bundle it inside a packaged webkit runtime. Voila, instant Windows Desktop app.

There are some caveats, such as an app designed for a touch interface running on a platform built around a mouse. This is best used to supplement your mobile app. Users of the mobile version will be versed in how it operates. Use with caution.

From a webOS App

1.) Make sure the Enyo framework is in your project directory.
2.) Modify the index.html file to ensure your Enyo reference is pulling it locally. Example:
<!doctype html>
<html>
<head>
<title>FlashCards</title>
	<meta name="apple-mobile-web-app-capable" content="yes" />
	<meta name="viewport" content="width=device-width initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
	<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
	<script src="enyo/1.0/framework/enyo.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
	new FC.First().renderInto(document.body);
</script>
</body>
</html>
3.) Make sure you have an icon.png file that is at least 128x128 in the root.
4.) make sure appinfo.json and framework_config.json exist in the project root.
5.) Compress all the files into a .ZIP file. Do not compress the folder it is in, but the files itself. Mac users will need a .ZIP compression utility.
6.) Go to the Intel AppUp Encapsulator site: http://appdeveloper.intel.com/en-us/encapsulator-beta
7.) Click on "Make Your App".
8.) Fill out the form. You will need Organizational Name, Windows App Name, MeeGo App name, App tool tip, App EXE Name, Version String. Then "Choose File" and select that ZIP file from step 4.
9.) Click "Make It".

The process takes a few minutes, but you will get two download files. One for Windows, one for MeeGo.

I like this one over Titanium because Audio and several other things work out of the box without special APIs. Intel does have their own APIs as well which are worth looking into. But this will get you started.

Want to see it in action? Download FlashCards To Go for Windows Desktop: http://www.flashcardstogo.com. Post your apps here so others can see.


IMPORTANT NOTES

1.) If the AppUp Encapsulator complains about a missing icon.png, your most likely issue is that you compressed your project folder. The icon.png and index.html must be in the root of the ZIP File. So don't right click on the folder and compress, go into the folder, select the files, then compress.

2.) Make sure you have a framework_config.json file. I have seen an instance where missing this file will cause it to error out entirely. Example:
{
	"logLevel": 99,
	"debuggingEnabled": false,
	"timingEnabled": false,
	"logEvents": false,
	"escapeHTMLInTemplates" : true
}
3.) There is a WebInspector bundled in the app itself. Simply right click within the app window and choose "Inspect". You'll find the familiar Inspector ready for your debugging pleasure.

Comments

  • Semi-related question:
    Would this work for Mojo apps too?
    Thanks!
  • edited January 2012
    So, I tried packaging up my only completed enyo 1.0 app tonight. I wanted to test it just like back in the early days by draggin it into a chrome browser. All I get is a grey screen. Have you any quick suggestions as to what it could be? This is a working app on the HP Touchpad with webOS.

    Oh and thats for the HOW TO!
  • @JevVandegrift: The Chrome browser needs special permissions. Start the browser with this args and it should work.
    --allow-file-access-from-files --disable-web-security
  • Oh yeah, I seem to recall that now. I used to just have a shortcut with that saved on my desktop. Thanks.
  • Alrighty, its working fine in Chome, but All I get is a grey box when I run the app installed by the .msi created with AppUp encapsulation program.

    Any more tips?
  • Right click in the app and then chose "Inspect", then the console. I forgot to mention is has a full on web inspector with it for those debugging moments.
  • I remember trying this way back when. Still can't get some ajax responses to work (and unfortunately these are crucial ones). Maybe I'll have better luck with Enyo 2.0.
  • What kind of Ajax requests are failing? Maybe we can help, and if not, at least put it in the known issues pile.
  • rsanchez, I wonder if you're hitting some sort of cross-origin XHR failure. On webOS, we allowed any local app to make a request of any site out there. This is also something that PhoneGap usually allows, at least if the app manifest is right. Maybe there's some setting in the Intel tool you need to tweak to allow it.
  • Ben,
    The Intel Encapsulator does away with cross-origin issues. Works much like mobile devices since it has no real domain or origin to begin with.
  • This is in my Google Reader app. As far as I could tell, logging in worked just fine. The success callback was called. But, fetching feeds did not return. It just seems to hang on that call. Note that the Ajax requests are made using Prototype.js instead of Enyo. It's easier for me to just include Prototype.js to port backend code directly. This also makes me think it's a compatibility issue between Prototype.js and the AppUp Encapsulator, but I'll link to the relevant lines of code anyway:

    login: https://github.com/rsanchez1/feeder-webos/blob/enyo/source/models/api.js#L2
    get all feeds: https://github.com/rsanchez1/feeder-webos/blob/enyo/source/models/api.js#L169

    Only major difference between the two requests is the URL. Beyond that there's nothing obvious that says why one works and the other doesn't.
  • Which version of prototype are you using? I remember that the version in Mojo and the latest Prototype 1.x code had some Ajax differences.

    Sounds like something you could debug by breakpointing in the XHR event callback.
  • It's version 1.7. I'll try debugging by breakpointing later, thanks for the tip.
  • I'm having trouble getting my canvas app converted.

    The canvas creation seems to be the problem any thoughts?

    var context = document.getElementsByTagName('canvas')[0].getContext("2d");
  • I don't seem to be getting as far as everybody here! :-(

    Original Platform: Enyo 1.0 on TouchPad
    App Name: Data Steps - How Do You Do This in SAS
    New Platform: Windows 7 64-bit Ultimate
    MSI Name: HollandNumericsLtd.DataSteps-HowDoYouDoThisinSAS.windows_generic.msi

    Error message when I double-click file:
    Error reading from file
    E:\phil\Documents\software\windows_desktop\images\howsas01w\HollandNumericsLtd.DataSteps-HowDoYouDoThisinSAS.windows_generic.msi
    Verify that the file exists and that you can access it.

    This is the file I just clicked and I can access it!

    What have I done wrong? Or is it a feature of the beta release?..............Phil
  • I've resolved this issue, but I don't have a definitive answer. The problem lies in the length (depth?) of the file path, as, when I moved the MSI file to G:\temp, the MSI program installed the app correctly. I still don't know whether I had too many levels of folders, or the path name itself was too long, but at least it installs, so I can now try to debug it!

    ............Phil
  • edited January 2012
    Another solution for deploying Enyo apps on Windows is Pokki. It features web apps in a nice popup-like manner in the task bar. Very nice for lightweight web apps. It also has its own app store.

    Here is link to the developer site: http://developers.pokki.com/
    Just follow the guide there and you should be fine. The only issue I ran into was that I had to give the body of my app an explicit height and width since my top-level component was a VFlexBox
  • @MakleSoft, Interesting! Does Pokki cope with HTMLContent in Enyo 1.0. Now I've got the install to work, all I see is the index.html data, not the app.
  • @cg_warner It's likely something small. If you right click on the app window, you can see the web inspector and debug it from there.
  • Thanks for the suggestion, MaKleSoft. Will definitely try it.
  • @hollandnumerics Sounds like the framework did not load. Are you referencing your local enyo copy?
  • @MakleSoft, the framework did load, but a typo in the renderInto script was the cause of the problem. Thanks also to @erupnu for comment about the inspector.

    Everything works now except the email service call.

    Many thanks.............Phil
  • With my app, debugging it a little more reveals that the login request doesn't succeed after all. It just returns an empty response. For anyone who has tried using the AppUp Encapsulator, have you had any trouble with Ajax requests to https URLs? Also, does anyone who has used the AppUp Encapsulator use Google ClientLogin or OAuth in their app?
  • For anyone trying the AppUp Encapsulator, it looks like it has a problem with https requests. I can't get https Ajax request to return anything and doing window.open to an https URL returns an empty page. I'm trying to find out if there's a setting that allows https or if this is just a bug of the current version of the Encapsulator, so if someone knows if there's a workaround, I'll really appreciate it.
  • Canvas Apps need to be careful not to draw before the DOM has been initialized. I found the coding style documented on the is solid.

    http://developer.palm.com/blog/2011/09/integrating-html5-features-into-enyo/
  • Can you download what Intel uses so you can build locally? Or is there any alternative so you can compile it all locally? It's a bit annoying to keep uploading to Intel's site. Granted, I can test in the browser so my builds should be limited...But I would also like offline work sometimes.
Sign In or Register to comment.