In this chapter we are going to discuss the creation of self extracting password protected executable files (SFX EXE file). This feature was request by one of our existing customers and the main idea is that it enables you to send OpenPGP password encrypted data to someone who does not have to have any OpenPGP software installed.
The classes that provide this functionality are located at the DidiSoft.Sfx namespace.
1. Example
2. Target .NET Framework
3. Customization
1. Example
Below is an example that illustrates how to encrypt a single file into an OpenPGP password encrypted EXE file.
C# example
using System; using System.IO; using DidiSoft.Sfx; class SfxFromFile { static void Main(string[] args) { // decryption password string password = "pass123"; // create the self extracting file SfxCreator sfx = new SfxCreator(); sfx.TargetDotNetFramework = SfxCreator.DotNetFramework.SELECT_FROM_EXECUTING_PROGRAM; sfx.EnryptFileToExe(new FileInfo(@"DataFiles\test.txt"), password, new FileInfo("sfx_demo.exe")); } } |
VB.NET example
Imports System Imports System.IO Imports DidiSoft.Sfx Module SfxExeFromFileDemo Sub Main() ' decryption password Dim password As String = "pass123" ' create the self extracting file Dim sfx As New SfxCreator() sfx.TargetDotNetFramework = SfxCreator.DotNetFramework.SELECT_FROM_EXECUTING_PROGRAM sfx.EnryptFileToExe(New FileInfo("DataFiles\test1.txt"), _ password, _ New FileInfo("sfx_demo.exe")) End Sub End Module |
A screenshot of the started sfx_demo.exe can be seen below:
The SfxCreator class provides also methods for encrypting a whole folder with its contents.
2. Target version of the .NET Framework
By generated EXE file is a managed executable that requires .NET Framework on the target machine. By default the file is compiled with the version of the Framework that the current process is running under.
You can select explicitly from version 2.0 and above.
3. Customization
Customization is achieved with the help of the DidiSoft.Sfx.SfxOptions class, when it is passed as parameter to the SfxCreator class methods.
The title and icon of the application can be set with the properties SfxOptions.WindowTitle and SfxOptions.IconFile.
If you need additional customization of the look and feel of the resulting application, you have to:
1. Unzip the file [library setup folder]\Help\Sfx.zip
2. Modify with Visual Studio the form file FormMain.
3. Specify that you wish to use the modified self extracting sources in the SfxOptions.SourceFolder property.