General

Getting Started #

GraffitiBundle for Desktop is a project that you will modify to suit your individual needs. It comes setup to run with minor changes, so you can focus on customization.

The most important change to get GraffitiBundle functioning is the setup of the GraffitiBundle.Project object, which should be done in the Opening event of the GraffitiBundle.View subclassed DesktopWindow (called windowMain). Note that the Project.BundleID value must match the BundleID value from your Web project. All values are covered in the GraffitiBundle.Project documentation.

You may customize windowSplash and windowMain however you like visually. The DesktopHTMLViewer used to display the web application will be added programmatically when it’s ready, and you’ll be prompted to position, size, and lock it somewhere other than the default in the PositionViewer event.

Note that neither window is an implicit instance, and windowMain is created in the App.Opening event.

You should always save a new copy of the project before beginning customization, and remember that everything in the GraffitiBundle folder is required for proper operation of the application.

Updates #

GraffitiBundle uses a publicly-accessible JSON file stored on the web to detect and download updates for both the desktop client application and the web child application. For Desktop, the value compared to the remote version is App.NonReleaseVersion while Web child applications should be distributed with a application.json file in their root directory which specifies the currently installed version.

Sample application.json #

{
  "version": 5
}

Sample version.json on remote server #

{
   "parent":{
      "version":2,
      "macos":"https://graffitisuite.com/bundle/parent/macos_universal.zip",
      "windows":{
         "arm":"https://graffitisuite.com/bundle/parent/windows_arm.zip",
         "x86":"https://graffitisuite.com/bundle/parent/windows_intel.zip"
      }
   },
   "child":{
      "version":5,
      "macos":"https://graffitisuite.com/bundle/child/macos_universal.zip",
      "windows":{
         "arm":"https://graffitisuite.com/bundle/child/windows_arm.zip",
         "x86":"https://graffitisuite.com/bundle/child/windows_x86.zip"
      },
      "linux":{
         "arm":"https://graffitisuite.com/bundle/child/linux_arm.zip",
         "x86":"https://graffitisuite.com/bundle/child/linux_x86.zip"
      }
   }
}

App Store Note #

When pairing the GraffitiBundle desktop application with a Web application that is distributed as a child (IE: Project.ApplicationURL does not point to a live version somewhere on the web), it’s unlikely to pass App Store Review as-is due to launching a child application and may require additional Entitlements to be declared. This is not included.