Immersive SPAT

Immersive SPAT is a re-developed version of our SPAT software designed to allow salespeople at Immersive to re-sell our mining products. (This page migrated from: http://icom-ws122/wiki/index.php/Immersive_SPAT)

Client Contact

Our primary client contact regarding all things Immersive SPAT is Nicola Page (NPage@immersivetechnologies.com).

Nicola is a support person in the Perth office.

We have also had contact with Dmitry Vysotskiy(DVysotskiy@immersivetechnologies.com). He has assisted in several proxy exception issues.

Current Version

The currently deployed version of Immersive SPAT is 0.6.6. The latest stable version can be downloaded here: http://immersive.icomproductions.ca/spat/

The current in-development version of Immsersive SPAT is 0.7.5 The latest testing version can be downloaded here: http://immersive.icomproductions.ca/spat/_testing

Features

  • Exe based installer will install both the ImmersiveSPAT application and optionally the Air Player required to run it (this will only occur if air player is not already installed or is out of date).
  • After application installation, media files hosted on the server will be downloaded to the users local hard drive.
  • These media files are made available from within the application.
  • The application will check whether or not updates to the media are available, and will prompt the user to sync their files with the server if so.
  • The application will automatically check for updates to itself, and download and run the installer those updates.

Authentication

This tool currently uses a username / password combo to verify that only immersive users are able to download and run the content within the app.

Username: previewUser

Password: immersive

Note that once an app has been authenticated, it doesn't ask for user info again, unless it is uninstalled and re-installed.

Hosting / FTP

This project is hosted on icomfiles.com - our CDN based hosting, which is mapped to http://immersive.icomproductions.ca/spat/ Files are uploaded via ftp with the following credentials:

host: immersive.icomproductions.ca

user: immersive_spat

pass: #am+J?T6aBRe

Deployment Procedures

Deploying an Application Update

  1. Back up existing installer file and update descriptor:
    1. Move copies of the existing nativeUpdate.xml and ImmersiveSPAT.exe files to the archived installers directory on the ftp site.
    2. Rename both files, appending the three digit version number to the end in the following format: ImmersiveSPAT_#_#_#.exe.
  2. Place the latest installer on the testing provision.
  3. Download and run the installer manually - it should ask to replace the existing version of the software. If no issues are found, notify Immersive stakeholders.
  4. After Immersive stakeholders have ok'd the release:
    1. Replace existing installer and update descriptor files. Ensure that their versions match exactly.
    2. Run or install ImmersiveSPAT from the deployment portal and ensure proper operation. Locally.
  5. Backup the Flash Builder project to ensure we can revert back if required.
  6. Run the software locally, test that the update works properly.

Deploying New or Updated Content

Courses(zip)

  • Publish a "non-tracking" package of the course using CourseBuilder.
    • If brain version is less than 3.8, ensure that the structure has all lessons tracking type set to "launch" prior to packaging - this is a workaround for a problem with how 'track on next' was working prior to that brain version.
  • Rename the course package to something sane - CompanyName_CourseName.zip
  • Ensure that you can unzip the package successfully before uploading. (Avoid corrupt zips)
  • Download, back up, and update data.xml from the ftp site to include:
    • A <file> node representing the course zip file to download.
    • A <course> node representing the course inside the "Courses" view. Spelling counts here - if you do not use the same file name spelling for the course node as in the file node, your course node will never become unlocked.
  • Upload the zip package(s) and the new data.xml to the ftp site.
  • Launch SPAT, sync your files, and ensure that the new content is displayed properly.

Learning Modules [new in 0.7.5]

  • Each learning module should be it's own exe file with no external dependencies.
  • Download, back up, and update data.xml from the ftp site to include:
    • A file node representing each new learning module.
    • A learningModule node representing the learning module inside the "Learning" view.
  • Upload the exe(s) and the new data.xml to the ftp site.
  • Launch SPAT, sync your files, and ensure that the new content is displayed properly.

PDF's, Videos, other resources

  • Ensure that the files use the productNumber_courseTitle naming convention prior to upload.
  • Download, back up, and update data.xml from the ftp site to include:
    • A file node representing each new learning module.
    • The appropriate node type for the resource/video being added. See data.xml for documentation.
  • Upload the new resource and data.xml file to the ftp site - overwrite the existing file if it is a content update.
  • Launch SPAT, sync your files, and ensure that the new content is displayed properly.

Known Issues

  • Sporadically, large zip files are failing to download fully. This is currently under investigation.
    • [RESOLVED] Zip file issue was found to be malware protection on client side interfering with zip's that contain executable content. The client has made an exception and has pushed this server wide.
  • Spelling and Capitalization count for file references on certain systems. I'm not sure why this happens, but it seems that "Start.exe" is not the same as "start.exe" in certain cases on certain users computers.
  • In version 0.6.1, an issue was introduced where certain users would get files 'stuck' and the app would require them to re-sync after each launch.
  • If the application update descriptor online does not match the version number of the application, it will re-download the latest installer and run it. This can cause problems, if the version of the latest installer does not match the update descriptor file, as the application will launch, check for updates, download the update, close itself, run the updater, run the software after update, rinse, wash, repeat.
  • At resolutions higher than 1280x720, when the application is set to full-screen mode, the videos may appear blurry, but playback quality is still considerably higher than previous versions. This is due to the fact that the videos are exported at 1280x720, so when viewing at a higher full-screen resolution, flash has to scale the image. Videos are not scaled larger than their native resolution in windowed mode.
  • If course packages are uploaded to the FTP server and are corrupt or become corrupt during upload, the software will download them but fail to unzip properly and overwrite the existing course files. To prevent this, ensure that zip files are not corrupt before upload, and that the course content displays properly when synced after a content update.
    • Future plans: log this error and possibly expose it to the user?

ChangeLog

v 0.7.5

  • Added "Courses" and "Learning" tabs.
    • Courses: A tab that allows direct listing + launching of all courses downloaded.
    • Learning: A tab that allows direct listing + launching of all ICOM learning modules (spat modules, etc.)
  • Note This version is the first version deployed AFTER the organization-wide malware protection exception that allows proper syncing of zip files to the client machine. Going forward, I am hopeful we will not see such issues.

v 0.6.6

  • Same as 0.6.5 but with updated version number to allow users with previous versions marked as 0.6.5 to update to the later version.

v 0.6.5

  • Same as 0.6.4 with the following additions:
    • [PRIMARY CHANGE] - File hosting has been moved to http://icomfiles.com/ - This is a cloud based CDN service that should alleviate many issues we've experienced previously, including the zip issue and slow download speeds in far-away places. NOTE: The first user to download the files in a new location may experience a non-sped up download time.
      • The CDN acts to route traffic through it's own servers which cache copies of the files from our server at each end-point, meaning that so long as the CDN can reach our files successfully, users accessing files will now be routed through their servers and using their server caches, rather than pulling data from our own hosting. (More here: https://www.cloudflare.com/features-cdn)
      • We have added a call to System.pauseForGCIfCollectionImminent after each loader is disposed and nullified. This should 'suggest' to the garbage collector that this would be a good time to perform a garbage cleanup. (More here: http://blogs.adobe.com/cantrell/archives/2011/10/providing-hints-to-the-garbage-collector-in-air-3.html )
  • Authentication is now required only once. Subsequent syncs will not require the user to enter password and username data.

v 0.6.4

  • NOTE: This version of the app was never promoted to a deployed version - it was only available on the testing portal.
  • This version of the app is primarily made up of optimizations and new features to assist with partial zip file downloads. It seems that large zip files are not always being downloaded fully. The major cause seems to be poor connectivity and/or server disconnections, but RAM saturation, connection issues, etc. are all being treated as causal factors.
  • To combat these, we've implemented the following:
    • We now place zip files first in the download queue to avoid RAM issues during download
    • We have beefed up error handling around file stream errors. This should let us know if the file size error is indeed due to RAM saturation (my current suspicion), or to something going on in the connection between our servers (this seems less likely as the software should already be throwing errors here, but anything is possible).
    • We've added better error handling when clicking on a link that has the 'file access error'.
    • Now, when a user experiences this error, it will ask them if they want to re-sync that singular file. Chances of something going wonky in the download of a single file are far lower. If they choose this option, it deletes the file and the unzipped content and pulls it back down from the server.
    • Cache busting: we've swapped the cache busting method we're using so that when the file is requested from the server it should be pulling unique content regardless of proxy server, caching setup, etc.
    • Added an option to reset all launchable media (only zip files) alongside the option of resettingALL media. This should help users who have more than one "file access error" item in their list.
    • Adding a short delay between download completion and writing the file to disk. This will guarantee that the file stream has finished and closed properly before we attempt to write the data to disk. We had previously trusted the 'completion event' on the download, but a few milliseconds of time may help alleviate the random byte size changes noted below.
  • Added a check to ensure progress bars never show more than 100% progress.

v 0.6.2 - 0.6.3

  • These versions were hotfixes built to resolve the 'file sticking' issue introduced in v 0.6.1
  • Settings menu added in 0.6.3 -> Only setting available is "Reset All Media"
  • Updates to progress UI
  • Note - the cause of the sticking was related to network file size reporting and local file size reporting for the zip files being different. We disabled file size comparison for v 0.6.3 as there was no fix for the comparison issues at this time.

v 0.6.1

  • NOTE: This version is known to have issues where for some users, files will become "stuck" and will constantly require syncing on relaunching the application.
  • This version of Spat has gone through a data format overhaul.
    • In preparation for future updates and an administrative back-end, we have gone to a manual entry model for data. Files, resources, products, etc. are now separate entities within the data.xml file. The application still hits a php file, and this file simply outputs the same data from the server, but adds a modified and size value to each file node for version checking within the application.
    • Due to this overhaul, each file now has it's own enabled state - list views like the product view no longer wait for all files to be downloaded before enabling themselves - each video, document, resource, etc. becomes enabled when it is downloaded and ready for use.
  • The Resource tab has been opened and content added for it.
  • The "Resource" column under products has been renamed "Documents" in order to avoid confusion.
  • Now, zip files can be used for more content than just course ware.
    • In any product or resource node, a <launchable> will be included, and specify both the zip package and the launchable file within the zip package that should be launched.
  • File naming convention is no longer being used as the means to generate the data xml file, which removes a number of restrictions from the application.

v 0.6.0

  • This version of the software can download and launch ICOM courses in addition to videos and pdf's.
  • Now, server side communication can be toggled by setting the "offlineMode" property before publishing the app.
    • Future plans include the ability to toggle this at runtime.
  • Automatic sync on startup has been disabled, as it presents a security risk as well as increases potential for being marked as "Malicious" by virus scanner software.
  • Added a version number display to the title of the application window.

v 0.5.9

  • This was the limited run Minexpo version of SPAT. It temporarily disabled all server communication.

v 0.5.8

  • Files that are no longer present on the server will also be removed from the local file system. (They are moved to the trash by default).

v 0.5.7

  • Video Playback quality at non-standard and/or small scales has been significantly improved using deblocking and smoothing.
  • Video Playback quality at fullscreen resolutions has been improved. (Known Issue: At resolutions higher than 1280x720, the videos may appear blurry, but playback quality is still considerably higher than previous versions.)
  • Resources and documents are now stored in the ApplicationStorageDirectory instead of the user's Documents directory, to prevent issues with certain backup systems.
  • Submit button is now disabled for all authentication until a password is provided.
  • Minor graphical changes to the UI.

v 0.5.6

This was the first released version of Immersive SPAT.