One of the main reasons to compile your websites is to protect your HTML pages from being copied, stolen or even just accessed without your authorization. To view your compiled website, end users have to launch the compiled website .exe file. It is also not possible to unpack a compiled publication or ebook using a file archiver (like 7-Zip) without running it. Finally, for non Self-Extracting publications, they cannot be decompiled. In other words, please make a backup of your source files because once a publication is compiled, you cannot extract source files from it anymore.
Publications and ebooks built with HTML Executable feature several security options that you can configure:
If you wish to restrict the access to your publication, you can password protect it: end users will be prompted for the password before the ebook starts. If the password entered is incorrect, then an error message is displayed (given by SInvalidPassword resource string) and the ebook closes immediately.
You can also customize the behavior of the publication when the password is incorrect thanks to the HEScript UserMain.OnInvalidPasswordAtStartup Boolean event. The runtime module invokes this event if the password provided by the user is incorrect. If you set the result of this event to True, the publication does not exit.
function OnInvalidPasswordAtStartup: Boolean; begin Result := True; end;
In order to create a set of acceptable passwords that can be unique, when distributing to a set of customers, wild card characters are accepted. Thus, you can set up the following global password: 123-4**-A** (and so any character can be input for the wildcard place holder).
Allowed wild card characters:
HTML Executable comes with a password generator that lets you create lists of random passwords based on the provided mask.
Choose the number of passwords to create and click Generate.
Once you have set up a global password, your end users will be asked for it each time they start your ebook. If you wish to avoid that, enable this option. Once the password has been validated, it will be stored and your users can access your ebook without being prompted for the password each time.
The password is either stored on the local computer OR on the storage device (USB stick for instance) if you are making a portable publication.
If you would like your publication to expire after a specific date (it does not run anymore), then just select the expiration date you want. After that date, an error message is fired (given by SPublicationExpired resource string) and the publication closes immediately. Changing the system clock will not modify the expiration state.
This option, however, is not very safe: if you want to create Trial publications that can really expire “forever”, then make a restricted publication.
When testing your publication on your own computer, you can remove the expiration state by clicking “Clear expiration info”. This function will only work if the publication has expired. It is possible to remove the expiration state on other computers using the Cleanup utility.
By associating the expiration date to a version number, you have a way to reset the global expiration once you release a new version of your ebook. For instance, you have a global rule to expire the software on 5/1/2012, and once it's expired, you will be releasing a new version requiring everyone to upgrade.
Finally, you can also customize the behavior of the publication when the expiration date is reached thanks to the HEScript UserMain.OnExpiredPublication Boolean event. The runtime module invokes this event and if you set its result to True, the publication does not exit.
function OnExpiredPublication: Boolean; begin Result := True; end;
When a publication is downloaded from the Internet, if the download was not successful, this may result in a truncated file. In this case, running non-complete publications may not be safe. To prevent truncated downloads or size-modified publication files, you may enable this option. When turned on, it forces the publication to check its size. If the size is not the same as it was when the publication was built, an error message is fired.
This option is superseded by digital signatures. If you have the necessary Authenticode files (a code signing certificate), then it is even better to sign your publication.
The PRINT SCREEN key allows Windows users to capture the whole screen to a bitmap, called a screenshot. This screenshot is then saved to the Clipboard and users can paste the result in any word processing tool or image editor. If you would like to disable this function, just turn on “Disable Print Screen”: pressing the key won't take screenshots anymore when the publication is running.
Enable this option to make sure that only one instance of your publication executes. If the user tries to run a second instance, it immediately exits and the previous instance gets enabled and visible.
Moreover, command-line arguments are directly passed to the running instance: this feature is useful for help files as it lets you change the current topic for instance without having to close and start another instance of the publication.
This option checks for known debuggers and file/registry monitoring software programs (such as OllyDbg, SoftIce, WinDBG, RegMon, FileMon…) and will refuse to run the ebook if one is running. An error message is fired, or advanced user may also customize the behavior of the publication thanks to the HEScript UserMain.OnDebuggerDetected Boolean event. The runtime module invokes this event and if you set its result to True, the publication does not exit.
function OnDebuggerDetected: Boolean; begin Result := True; end;