SatForms Power Tip: Hiding SF Extensions

----------------------------------------

 

The Problem:

 

Satellite Forms provides much of its functionality by extensions.  While this has the advantages of keeping the application small, as you only add the functionality you need, and fast, as the extensions are written in C, it does mean that the extensions need to be distributed with the application.

 

With SatForms version 4.1, the RDK engine's file type has been changed to 'appl'  with a Creator ID of SMSE.  The Creator ID of the PumaTech extensions has also been changed to SMSE (previously these were SMSF). This is done so that SF extensions will be grouped properly by Palm's launcher application and will therefore be hidden in the Palm Menu /Delete and /Info sections.  However, many third-party extensions use the Creator ID SMSF.  These extensions will not be hidden by the RDK. Also, if your user installs an application with an earlier version of your extension, your application may potentially be broken.

 

With SatForms versions prior to 4.1, since the RDK does not have the file type of 'appl', each extension would show separately in the Palm Menu /Delete and /Info sections.  In addition, your application could be broken if the user installed an earlier version, as noted above.

 

The Solution:

 

If you use SF 4.1 and do not use any custom extensions, you do not need to do anything.  Your extensions will be automatically hidden.

 

If you use an earlier version of SF, or if you use any third party extensions with a Creator ID other than SMSE, your extensions will not be automatically hidden.  One solution is to change the Creator ID of the third party extensions to SMSE to match the SF 4.1 RDK engine, and thus be automatically hidden.  A second, even better, solution is to "attach" all extensions that your app requires to your application by personalizing them with a unique name and Creator ID.

 

Advantages to this solution include the following:

 

·         The extensions are unique to your application, and will not be affected by the installation of another developer's application (because the extension filenames are not the same).

 

·         The extension is not visible to the user, resulting in a cleaner and more professional-appearing application (because the extension Creator ID matches your application and is thus lumped into the bytes total for your app in the Info and Delete screens rather than being listed separately).

 

·         The extension is automatically removed when the user removes your application (because the Creator ID matches your app).

 

Disadvantages to this solution include the following:

 

·         Your applications with different Creator IDs no longer share extensions, thus any duplicate extensions will take up additional storage space.  Most extensions are quite small though.

 

·         There is increased work of setup and maintenance, taking time and creating the possibility of error.  Your extensions no longer work "out of the box".  This becomes especially noticeable as extensions and applications are updated.

 

·        If this method is not followed precisely, you may break other applications.  Specifically, you do not want to change the Creator ID of the extension to match your app without changing its name too, unless you are certain that this extension is not and will never be used by other SatForms application installed on the Palm.  If your app was deleted, the extension would be deleted too, thus breaking any other apps that relied on it.  Fully personalizing both the extension's CreatorID and name solves this potential problem.

 

The Method:

 

1. This example assumes a Creator ID of CRID, an extension name of Utility and a PRC name of SFE_Utility.prc.

 

2. Create a directory called My Extensions (any name will do) and place it in the Program Files\Satellite Forms \Extensions directory.

 

3. Copy SFE_Utility.prc, paste it into the MyExtensions directory, and rename it CRID_Utility.prc.

 

4. Copy Utility.inf, paste it into the MyExtensions directory, and rename it "CRID_Utility.inf".

 

5. Open CRID_Utility.prc with PalmFileUtil, included with SF 4.1, and do the following:**

 

    a. Name:  change SFE_Utility to CRID_Utiltiy

 

    b. Creator ID:  change SMSF (or other Creator ID) to CRID

 

    c. Check backup, if desired.

 

6. Open the INF file and change the first two lines in [General] to read as follows:

 

    a. ExtensionName=CRID_Utility

 

    b. PrcName=CRID_Utility.prc

 

7. If the Utility extension is currently in your project, you need to do this additional step.  In AppDesigner, add CRID_Utility to your project, THEN remove Utility from your project. (Note:  This has been tested for custom plugins.  Custom controls usually work the same as long as you do not change the BaseName.  If you change the BaseName, it may be necessary to replace each custom control in your application.)

 

8. Recompile All, Save, Deploy, Test.

 

Comments:

 

·         If you are using a custom control, you will also add a bmp file to My Extensions directory.  This file is used by the AppDesigner and is not changed.

 

·         Be careful if your application requires other prc files.  For example, if you use SFBeamerPro, SFBeamReceiver.prc must not be altered, or it will cease to function.

 

**  Alternatively, you can use RsrcEdit on POSE (the PalmOS Emulator) to do these steps, but this is a little more difficult.  You have to load the extension on to POSE (use POSE rather than a real handheld), edit it using RsrcEdit, then Export the modified extension back to your hard drive.  You can download a shareware version of RsrcEdit from http://www.individeo.net/RsrcEdit.html and you can get POSE free of charge from http://www.palmos.com/dev/tech/tools/emulator/

 

 

Jon Blackman, MD, MS

www.pocketinformatics.com

 

David Thacker

www.palmdatapro.com

 

Revised 2001-09-19