Building an Evaluation Application
Applicationevalsetup.dll The evaluation period for an application begins when the application is first installed on a user's PDA. This initialisation requires that a Pocket Dyalog Dynamic Link Library named evalsetup.dll be called by the your installation program (setup.exe) at install time.
evalsetup.dll contains a function named Install_Exit() which is automatically invoked by setup.exe just before it exits after completing a successful installation process.
If you want to hook in your own custom DLL at this stage, you will need to ensure that it calls Install_Exit() in evalsetup.dll directly as described below
Note: If you omit to include evalsetup.dll with your evaluation application, or if you fail to properly call it when the application is installed, your evaluation application will display the Evaluation Expiry dialog box when it is invoked, regardless of the expiry date.
Copy evalsetup.dll Copy evalsetup.dll from \Program Files\Pocket APL on your PDA into the application directory (e.g. c:\myapp) on your desktop computer.
Change app.inf
The sample app.inf file (the installation configuration file) contains a section called DefaultInstall.
To call a DLL at install time it is necessary to add the CESetupDLL parameter to this section:
[DefaultInstall]; Required section
CEShortcuts = Shortcuts.
All
CESetupDLL=evalsetup.dll
Secondly, it is necessary to include evalsetup.dll in the list of files to be installed on the PDA. In the sample that is provided (DAN) there is a single group of files defined in the section labelled [Files.ARM]. In this case, it is sufficient to add evalsetup.dll to this list.
[Files.ARM]
dan.dcf,,,0
dan.exe,,,0
evalsetup.dll,,,0
Finally, you must specify where evalsetup.dll is located on your desktop computer. Assuming that you had copied it into the same sub-directory as dan.exe, the following addition is required.
[SourceDiskFiles.ARM]
dan.dcf=1
dan.exe=2
evalsetup.dll=2
Unless you intend to use your own custom DLL for installation these are the only modifications you need to make to your build files.
Using your own custom install DLL
If you are hooking up your own DLL to Install_Exit() called by setup.exe, you need to make an explicit call to the Install_Exit() routine in evalsetup.dll. For example, your own Install_Exit() routine might be as follows.
codeINSTALL_EXIT Install_Exit(
HWND hwndParent,
LPCTSTR pszInstallDir, // final install directory
WORD cFailedDirs,
WORD cFailedFiles,
WORD cFailedRegKeys,
WORD cFailedRegVals,
WORD cFailedShortcuts
)
{
/*
your code here
*
/ if (everything_else_went_ok)
{
HINSTANCE hDll = LoadLibrary(L"evalsetup.dll");
if (hDll)
{
int (*fp)() = GetProcAddress(hDll,L"Install_Exit");
if (fp)
(*fp)(hwndParent,
pszInstallDir,
cFailedDirs,
cFailedRegKeys
cFailedRegVals
cFailedShortcuts);
FreeLibrary(hDll); }
}
return codeINSTALL_EXIT_DONE ;
}
Note that evalsetup.dll must be installed on the PDA, and so will need to be added to your app.inf file, as illustrated above. |