So what is this PACKAGE.INI file anyways? What does it contain, why do I need it, and how can I use or modify it? These are common questions we get around the PACKAGE.INI file.
What is the PACKAGE.INI?
First and foremost, the PACKAGE.INI file is the the brains behind the project.
What does it contain?
It is where ThinApp stores all of the settings to the questions you answered within the ThinApp GUI.
Can I modify it?
Absolutely! Simply open it with NOTEPAD or any other text editor to modify it to fit your needs.
Where can I find help on the contents of the PACKAGE.INI?
For a very detailed read on every single setting within the PACKAGE.INI, you can go to the ThinApp Online Documentation and you will be able to find every single entry and subsequent values listed.
NOTE: Not ever entry will be present within your PACKAGE.INI, however default values will still be assumed.
What are the contents of the PACKAGE.INI File?
Notes and Help
ThinApp’s Developers and Engineers took great care to make the PACKAGE.INI lay out in a logical format for easy access, reading, and manipulation. To that end, the very first thing listed is a URL. This URL, when pasted into your browser of choice, will bring up the very latest online help for your version of ThinApp!.
Compression and Isolation
The first two sections of note are COMPRESSION and ISOLATION. Under COMPRESSION is the CompressionType value which is quite simple as it’s either NONE or FAST (“Fast” being the actual name of the PKZIP compression algorithm).
Specifically for ISOLATION, the Default Directory Isolation Mode (DirectoryIsolationMode) is the entry found underneath it. Another entry which can be manually entered underneath the ISOLATION section is the “RegistryIsolationMode“. Both entries have values of either “Merged” or “WriteCopy”. For further explanation on Isolation Modes, see the ThinApp Blog article (and subsequent embedded video) ThinApp 101: Differences Between the Isolation Modes.
NOTE: Do not use “Full” isolation in either “DirectoryIsolationMode” or RegistryIsolationMode” entries as this will prevent the application from seeing the Windows Operating System.
Under the Build Options, you’ll find numerous other settings, so I’ll attempt to stick with the basics here to help keep things simple. It should be noted, however, the Build Option entries do not need to appear in any specific order or even at all since, as previously stated, any option not specifically present will have it’s default value assumed.
Under this section you’ll find every value you need in order to not only create an MSI but create it in any number of fashions – even allowing a regular user to execute the MSI or doing such things as configuring the parameters to use an MSI to update a ThinApp’ed application previously deployed with an MSI.
The AppSync Parameters are remarked out by default and only placed within the PACKAGE.INI as an example of what to do in order to configure Application Syncing.
For additional information on Application Syncing, see the ThinApp Blog article (and subsequent video), AppSync Explained.
Parameters used only during Setup Capture
As for the other entries, you’ll find CapturedUsingVersion which simply denotes the ThinApp Version used to capture the application package in question and OutDir which tells ThinApp the folder to create and then dump the packaged app to.
General Purpose Parameters
- Under this section, you’ll find a various set of entries. The typical ones being the following:
- SandboxName= This is the name of the Sandbox folder created for the application (typically under the %APPDATA%\THINSTALL folder within the user’s profile).
- InventoryName= This is what is used to determine the default names of the project folder and sandbox during the application capture process.
- ;PermittedGroups= The Active Directory or Local Windows Security Groups of users defined who may execute the ThinApp packaged application in question. Typically this is remarked out unless defined within the GUI.
- ;RemoveSandboxOnExit= Remarked out by default but used to tell ThinApp to wipe the application’s Sandbox upon exit of all parent and child applications within the respective ThinApp package.
- ;SandboxNetworkDrives= This value, remarked out be default, is used to tell ThinApp to use the Sandbox for Network Drive access. The default is NOT to use the sandbox for Network Drives.
- ;SandboxRemovableDisk= This value, remarked out be default, is used to tell ThinApp to use the Sandbox for Removable Media access. The default is NOT to use the sandbox for Removable Drives.
- ;VirtualizeExternalOutOfProcessCOM= This entry, remarked out by default, controls whether external out-of-process COM objects can run in the virtual environment or not.
- ;OptionalAppLinks and ;RequiredAppLinks entries are both remarked out by default. They are used to link the respective Parent ThinApp packaged application to any number of child ThinApp packages either on an optional or required basis. For additional information on Application Linking (AppLink) see the Configuring Dependent Applications with Application Link and the Application Linking articles in the online help.
- VirtualDrives= The VirtualDrives entry is used to define what drive letters are to be virtualized by the ThinApp Virtual Operating System (VOS) for the application to see an interact with. A virtual drive can either exist natively as any other drive type or not exist natively but only virtually. Using this entry, one can create such things as a virtual CD drive for an application which normally requires a physical CD be inserted for proper execution – and then include the contents of the CD within the ThinApp package to eliminate the need for the physical CD.
- AnsiCodePage= This entry uses a numerical value to specify the country locale where you captured the application. ThinApp uses the value to translate multibyte strings.
- LocaleIdentifier= This entry parameter displays a numeric ID for the locale information. The value for this entry locates the correct language resources from the application.
- ;Wow64= This entry is used to simulates a 32-bit environment for 32-bit applications which cannot run (at least not properly) on a 64-bit Windows operating system. As the note within the PACKAGE.INI says, if you have problems running your 32 bit application under 64 bit Windows, try enabling this line and rebuilding your project.
NOTE: Make sure you also read up on the Search Order for the Sandbox.
NOTE 1: This value like any other PACKAGE.INI value, may be defined after the fact. Defining the PermittedGroups value after the fact can be done by entering the Security Group name or SID value. Using a Security Group’s Name requires the system doing the build process have access to enumerate the Active Directory Group in question to look up it’s respective SID value. NOTE 2: PermittedGroups and PermittedComputers entries can also be defined under each Entry Point for a packaged application suite such as Office in order to define specific security settings for each individual Entry Point (i.e. Word, Excel, Outlook, etc. only open for users of those respective groups – even if a user is only a member of the Word group and not the Excel or Outlook Groups – hence they cannot open Excel or Outlook, only Word).
NOTE: ONLY ONE VirtualDrives entry can be used within the PACKAGE.INI file. The second, remarked out, “;VirtualDrives” entry is for demonstration purposes only!
Your entry points will appear within the PACKAGE.INI at this point forward. Typically the first entry point will be the Primary Data Container, as denoted by the “ReadOnlyData” entry underneath it. The ReadOnlyData entry defines the ThinApp Virtual Registry package container and, as stated by the entry name, is Read Only. All other entry point sections will link back to this Data Container by use of the Shortcut entry underneath each of the Entry Point names.
For additional settings which can be defined underneath each Entry Point, see the Configuring Individual Applications article in the Online Help.
These are the basics for each ThinApp PACKAGE.INI. Remember, additional information can always be found in the Online Help!