C4 Data - Application Profile

Medal -- list of (platform, medal) pairs

<app> <appprofile> <medal platform="..."> </medal>

This defines which medal to show for this application in the application selection dialog. Currently there the official platforms are Mac, Linux, and Android. On any other platform CrossOver would show an 'untested' medal.

C4P uses these values:

  • untested - Untested
  • knownnottowork - Known not to work
  • bronze - Bronze
  • silver - Silver
  • gold - Gold

C4 also has a supported/unsupported flag which varies the appearance of the medals: unbronze, unsilver, ungold


Category -- string

<app> <appprofile> <category> </category>

A slash-separated category path as defined by C4's set of application categories. That is this string is of the form 'category/sub-category/sub-sub-category', for instance 'Games/Racing Games'. This will be used to let the user filter the application list, or to present it as a tree.


Flag -- list of strings

<app> <appprofile> <flag> </flag>

This is a list of flags that characterize the application. The currently supported flags are:

  • component - This is applied to things like DCOM98, MSI, fonts.
  • application - This is applied to regular applications like Office, QuickTime, etc.
  • virtual'' - This is applied to profiles that don't need an installer. This is for pure dependency profiles such as the ''Core Fonts profile, but also potentially for profiles that only tweak settings such as the registry.

InstallerId -- C4Id

<app> <appprofile> <installerid> </installerid>

This is the id of the C4 entry that contains the installation profile. The default is to set this to AppId.

Note:

  • This is needed because C4 has separate entries for each component of applications like Microsoft Office. So this field is used so we don't have to duplicate the MS Office 2000 installation profile for Word, Excel, PowerPoint, Access, etc.

InstalledKeyPattern -- regular expression

<app> <appprofile> <installedkeypattern> </installedkeypattern>

This is used to check whether the application is installed, and by the installer core to check whether the installation was successful. Contains a regular expression used to match the uninstall registry key returned by "uninstaller.exe --list".


InstalledDisplayPattern -- regular expression

<app> <appprofile> <installeddisplaypattern> </installeddisplaypattern>

This is used to check whether the application is installed, and by the installer core to check whether the installation was successful. Contains a regular expression used to match the display name retrieved from the registry by "uninstaller.exe --list".


InstalledRegistryGlob -- list of (key glob, value glob, data glob) tuples

<app> <appprofile> <installedregistryglob> <key>...</key> <value>...</value> <data>...</data> </installedregistryglob>

This is used to check whether the application is installed, and by the installer core to check whether the installation was successful.

For each tuple in the list we try to find a registry key that matches the specified key glob, then a value in that key whose name matches the value glob, and then check if its contents, when converted to a string, matches the specified data glob. If the data glob is empty, then a value glob match is enough. If both the value and data globs are empty, then a key glob match is enough.

If we find a match for a given tuple then the application is deemed to be installed.


InstalledFileGlob -- list of [expandable|c4p_DataTypes#expandable-string] restricted file globs

<app> <appprofile> <installedfileglob> </installedfileglob>

This is used to check whether the application is installed, and by the installer core to check whether the installation was successful. If any of the specified file globs matches, then the application is installed.


BottleTemplate -- list of bottle types

<app> <appprofile> <bottletemplate> </bottletemplate>

This is the list of bottle types the application can be installed in. The preferred bottle type is the first one in the list.

Valid bottle types are:

  • win98
  • win2000
  • winxp
  • winvista
  • win7
  • win8
  • win10
  • winxp_64
  • winvista_64
  • win7_64
  • win8_64
  • win10_64

BottleTemplates can have an optional parameter "purpose". purpose can be either "use" or "install". "use" is the default value and results in normal behavior. A BottleTemplate with the parameter "install" will only be valid when the profile is used as a PreDependency but will not be presented as valid for the user when they choose to install this profile. This is useful for a profile where it functions best in a given BottleTemplate however it may be needed in other BottleTemplates for other applications, but does not function as well there.


AppBottleGroup -- string

<app> <appprofile> <appbottlegroup> </appbottlegroup>

This property is used to group related applications in the same bottle.

Notes:

  • This is different from dependencies. Obviously Visio can very well work without MS Office.
  • If an application should belong to two groups, then it probably means the two groups should be merged.
  • This assumes that the default policy is to install each application in a separate bottle, and this mechanism is a way to override that mechanism.
  • This setting has no effect on Android.

DownloadURL -- list of (language code, URL) pairs

<app> <appprofile> <downloadurl> </downloadurl>

For each language, the URL to the downloadable installer.


DownloadPageURL -- localizable URL

<app> <appprofile> <downloadpageurl> </downloadpageurl>

The URL of a web page from which the installer can be downloaded.


ExtraFor -- C4Id

<app> <appprofile> <extrafor> </extrafor>

This field lets us handle upgrades to components which something an automated analysis of the profile dependencies and their properties cannot do.

Also note that this field is not a dependency. This makes it possible to handle 'upgrades' that are in fact full installers and don't need the item they are upgrading to be installed first.

This makes it relatively easy to suggest installing upgrades for already installed applications.

This setting has no effect on Android.


SteamId -- Number

<app> <appprofile> <steamid> </steamid>

This field lets us handle games that are available through steam.

If this field is set to the proper Steam ID for the game then Steam is listed for the user as an available Install source. If the user selects Steam as the install source then we install steam in the bottle (if it is not present) and then pass this ID to steam to have it guide the user through the install.

Next Step: C4 Data - Install Profile

Last modified on 2023-09-29 20:25:05 UTC by Andrew Balfour