Output - Deployment

ExeOutput for PHP aims to generate the smallest application files. This is especially done via file compression.

Compressing application EXE files to make them smaller

If you plan to distribute your application on the Internet, we recommend you to compress it in order to reduce its size and download time. Several ways are possible:

compress the final .EXE file with UPX: UPX is a free executable packer available at http://upx.sourceforge.net/ ExeOutput for PHP can call UPX itself if you enable the option.

Note

For legal reasons, UPX is not shipped with ExeOutput for PHP. You have to download the program from http://upx.sourceforge.net/ and unzip the archive in the "UPX" subfolder, for instance in C: Program Files ExeOutput for PHP UPX. Alternatively, use the Web Update utility ("Check for updates" option) to automatically install this add-on in ExeOutput for PHP.

Finally, if you enable Obsidium API support, UPX compression is ignored.

distribute the final .EXE file in an installer: you can use Paquet Builder to compress your .EXE file into an installer, optimized for online distribution.

See Distributing Applications.

protect your EXE file with a third-party EXE compressor or protector: stand-alone executable files made with ExeOutput for PHP can be secured with third-party software protection systems, for instance Obsidium. For Obsidium compatibility,

Do not compile Visual C++ runtime components

The PHP.DLL runtime component used by ExeOutput apps requires dependencies from Microsoft Visual C++ Redistributable.

To create a stand-alone application, ExeOutput for PHP includes the required Microsoft Visual C++ Redistributable by default into your final EXE. But this contributes to the EXE's size. To reduce the size, you may want not to include Microsoft Visual C++ Redistributable. Thus, end users may have to install Microsoft Visual C++ Redistributable on old Windows in order to use your app:

Do not cache CEF files locally

Since the Chromium Embedded Framework runtime files have a huge size (about 50 Mb), it normally takes several seconds for the application to decompress them to memory at startup. To avoid this decompression step, and gain time in loading, the application will decompress and store Chromium Embedded Framework runtime files in a shared cache folder the first time it is run. If the runtime files already exist, they are directly used and no decompression is necessary.

If you do not want your application to store Chromium Embedded Framework runtime files (for instance, to save disk space) on the end user's computer, you can enable "Do not cache CEF files locally". However, the application will take longer for loading each time it is run.

The cache folder is the same for all applications made with ExeOutput for PHP. By default, the following cache folder path is used: C:\ProgramData\GDG Software\ExeOutput for PHP App Cache\CEFXXXX where XXXX represents the version number of the Chromium Embedded Framework used in ExeOutput for PHP.

Another name will be used if you configured a custom name for the storage folder (see below).

Leave CEF runtime files outside the EXE file (must be distributed with your .EXE file)

ExeOutput for PHP will not compile the mandatory Chromium Embedded Framework runtime files into your application EXE file (saving 40 Mb in size). However, the latter will not work on a computer if these files are not found. The following error message will be shown: missing CEF3 files!

You can use this option only if you are sure to install these files yourself. For instance, these files can be set up automatically if you use the exocefruntimeXXXX.exe installer available in the Redist subfolder of ExeOutput for PHP. Or, you can also find them in the CEFRuntime subfolder of ExeOutput for PHP. The files must be made available in the shared cache folder (see paragraph above).

Portable Version

ExeOutput for PHP can create portable versions of your apps. With a portable application:

  • no installation is required, your application is stored on a removable device such as a USB flash drive/stick, enabling it to be used on multiple computers.

  • user preferences and application settings are stored with the software (i.e. they are written to the USB drive). Thus, your users will keep their preferences even if they start the application on another PC. The Windows registry is not used.

  • no permanent modification is made to any PC the application is run on after being used.

Portable applications create one data file in addition to their EXE file:

  • the state file (user preferences, global variables...) is named: [name of the EXE].userpref

The state file is saved in the same folder as the EXE file. Consequently, the storage device should not be read-only. If the application is unable to write the file in the same folder as its EXE file, it will use the default location on the hard disk. The default location is a subfolder in the User Data directory as explained here that you may customize.

If you do not create a portable version, you can indicate a custom name for the storage folder where the application will store its settings. By default, it will be a subfolder in the User Data directory. You can obtain the full path at runtime from the global variable HEPubStorageLocation.

Warning

avoid using expiration features for a portable application. In fact, portable applications store their settings on the USB disk. Consequently, trial settings are saved on the disk too: an end user could easily reset his trial period by removing the settings files.