Test Drive It!
Download a fully-functional copy for a test drive at no risk, cost or obligation
For Windows NT/2K/Vista
Buy It For US$ 29
Source Code Included
Try-Before-You-Buy Guarantee
Automate Palm Conduit Installation For Delphi Projects

Delphi developers have always been able to quickly build Windows applications. But if
you have to add Palm capability, then things get really complicated really quickly.
Whether you actually
like C/C++ and use CodeWarrier, or Pocket Technologies'
PocketStudio Pascal variant to develop the Palm application, or
you roll your own conduit DLL with COM/PalmAPI calls in Delphi or use Jim Cooper's spiffy
TurboSync VCL component, you still
need a painless way to automatically install the conduit and the Palm application and register
it with Palm's PalmDesktop utility without requiring any customer action.

After looking at all the conduit installers out there, we reluctantly decided to build our
own, and we think that you'll like it too: quick to integrate, immediately clear how to use,
simple, and solid. Needless to say, we've included it in all of our Palm-enabled applications, and
now we're offering to the Delphi development community.

The trial version works the same as the full registered version, the only difference being that
Delphi has to be installed in the workstation that uses it. Both versions come with documentation
with code samples from our actual implementation and usage in our products. The full version
includes the object's Delphi source.
Supporting Documentation Preview
REQUIREMENTS
The Palm files to be installed (prc, and optionally pdb and rsc file types), the
main desktop application's conduit dll, any optional notifier dll, and a local
copy of the Palm CondMgr.dll must be available, typically placed in a subfolder
below the main desktop application's executable folder, usually named 'PalmSupport'.
The Palm HotSync manager must also be running in order for the registration and
installation to occur. Additionally, a unique upper-case four-character CreatorID must be available,
which should be registered with Palm at their developer's web site.
PROPERTIES
sConduitName: string READ
Valid only after a successful ConduitPresent() function call, contains the
full path and filename to the registered conduit dll.
sErrorMessage: string READ
Set on function calls. If empty then no error was encountered, otherwise
contains a description of the error.
iErrorNumber: byte READ
Set on every function call, 0 (zero) if no error was encountered. If non-zero,
then the sErrorMessage property will contain a description of the error.
bPalmPresent: boolean READ
Set to TRUE in the Create() constructor if the actual Palm conduit manager,
installation and hot sync dlls were found, and the HotSync manager is running,
otherwise set to FALSE. Should be tested for TRUE after the object is created
before proceeding with other installation functions, all of which will fail
if this is FALSE.
iUsers: integer READ
The number of registered users in the PalmDesktop, usually only one; set during
the Create() constructor processing. If there is more than one user, then a
user selection dialog will appear when then InstallPalmProgram() or
InstallPalmPrograms() functions are called.
METHODS
Create(zsPathToCondMgr: string)
Object constructor. The zsPathToCondMgr argument is the path (not including
the filename) to a copy of the Palm CondMgr.dll file, which should be included
in the distribution. The bPalmPresent boolean property should be tested before
using any functions to insure that they can correctly process.
function ConduitPresent(zsCreatorID: string): boolean
Set TRUE if a conduit is registered with the hot sync manager.
function InstallConduit(zsConduitFileName,
zsCreatorID,
zsFile,
zsFolder,
zsInfo: string;
ziPriority: word;
zsRemote,
zsTitle,
zsUser: string): boolean
Set TRUE if the conduit dll is successfully registered, FALSE otherwise.
The REQUIRED arguments are defined as follows:
zsConduitFileName
The full path and filename of the conduit dll to be registered with the
Palm hot sync manager, which is case sensitive.
zsCreatorID
A unique upper-case four-character CreatorID must be available, which
should be registered with Palm at their developer's web site.
ziPriority
A number ranging from 0 (highest) to 4 (lowest), typically set to 2.
Used by the hot sync manager to prioritize, within a priority group,
the calling of conduit dlls during a hot sync operation, after any
notifier dlls are called.
zsTitle
A description of the conduit, displayed in the CondCfg.exe Palm tool
program (included as part of the Conduit Developer's's Kit, available at
the Palm developer's web site).
The other arguments are OPTIONAL. If they are not used then their argument
entries should be an empty string. These are defined as follows:
zsFile
Optional, used by the registered conduit, the filename of the file that
the conduit syncs with. Generally not useful; the conduit should know
this already.
zsFolder
Optional, used by the registered conduit, the name of the subfolder inside
the Palm user's folder where the conduit stores processed or reference
data. Generally not useful; the conduit should know this already.
zsInfo
Information purposes only, displayed in the CondCfg.exe Palm tool, not
currently used by the hot sync manager.
zsRemote
The name of the database file inside the Palm device (a pdb file type).
Generally not useful; the conduit should know this already.
zsUser
Information purposes only, displayed in the CondCfg.exe Palm tool, not
currently used by the hot sync manager.
function InstallNotifier(zsNotifierPath: string): boolean
Registers a notifier dll. The zsNotifierPath argument is the full path and
filename of the notifier dll, which is case sensitive. Set TRUE if the notifier
dll has been registered, FALSE otherwise. There can be more than one notifier
for a given application, but their execution sequence cannot be guaranteed.
function InstallPalmProgram(zsProgramPath: string): boolean
Installs a single Palm program prc file. The zsProgramPath is the full path
and filename of the Palm program, and is case sensitive. If there is more than
Palm one user, then a user selection dialog will appear. Set TRUE if the
Palm program is successfully installed in the Palm user's Install folder.
function InstallPalmPrograms(zslProgramList: TStringList): boolean
Installs a group of Palm data files (prc, pdb and rsc file types), whose full
path and filenames are contained in the zslProgramList TStringList argument,
which are case sensitive. If there is more than Palm one user, then a user
selection dialog will appear. Set TRUE if the Palm program files are
successfully installed in the Palm user's Install folder.
function NotifierPresent(zsNotifierPath: string): boolean
Set TRUE if the notifier dll is registered with the hot sync manager, FALSE
otherwise. The zsNotifierPath argument contains the full path and filename of
the notifier dll and is case sensitive.
function UnInstallConduit(zsCreatorID: string): boolean
Set TRUE if the if the registered conduit is successfully removed from the
hot sync manager, FALSE otherwise.
function UnInstallNotifier(zsNotifierPath: string): boolean
Set TRUE if the if the registered notifier dll is successfully removed from the
hot sync manager, FALSE otherwise.
EXAMPLE:
implementation
uses
uoFW_PalmCondInstlrObj,
-
const
CREATOR_ID = 'PCIO';
CONDUIT_PRIORITY = 2;
CONDUIT_PATH = 'c:\path\to\myconduit.dll';
NOTIFIER_PATH = 'c:\path\to\mynotifier.dll';
-
procedure TMain.FormShow(Sender: TObject);
begin
-
InstallPalmConduit;
-
end;
-
procedure TMain.InstallPalmConduit;
var
bOK : boolean;
oPalmCondInstlr : TFW_PalmCondInstlrObj;
begin
oPalmCondInstlr := TFW_PalmCondInstlrObj.Create('PathTo_CondMgr.dll');
try
if oPalmCondInstlr.bPalmPresent then
begin
if (not oPalmCondInstlr.ConduitPresent(CONDUIT_PATH)) then
begin
bOK := oPalmCondInstlr.InstallConduit(CONDUIT_PATH,
CREATOR_ID,
'',
'',
'InfoAboutConduit',
CONDUIT_PRIORITY,
'',
'ShortDescription',
'');
(**** If a notifier is required
if bOK then
bOK := oPalmCondInstlr.InstallNotifier(NOTIFIER_PATH);
****)
if bOK then
bOK := oPalmCondInstlr.InstallPalmProgram('c:\path\to\palm_program.prc');
if bOK then
MessageDlg('The Palm program will be installed on the next HotSync!',
mtInformation, [mbOK], 0);
end;
end;
finally
oPalmCondInstlr.Free;
oPalmCondInstlr := nil;
end;
end;