Solved

InstallShield Pro NEWBIE: How to implement AskPath?

Posted on 2006-06-19
1
443 Views
Last Modified: 2010-07-27
Dear Experts,

I work for a small company, and I'm afraid I'm in way over my head on this one thing:  I need to modify our InstallShield Pro (11.5) setup to allow the user to select the target pack and directory.  So far, we have done only the simplest things with InstallShield (mostly in Express), and I know next to nothing about the more advanced features.

I have found this AskPath example (below) in their Help, but I have no idea how to implement it. (Where do I PUT it?)  I don't know what an "entry-point function" is, or how to "execute the custom action in a sequence".  Could anyone either tell me some step-by-step instructions, or maybe point me to a user-friendly site for beginners?  

Thanks a lot!
--BrianMc1958


NOTE
To call this function in a Basic MSI setup, you must first create a custom action for the entry-point function, execute the custom action in a sequence or as the result of a dialog's control event, and then build the release.
/*-----------------------------------------------------------*\
 * InstallShield Example Script
 * Demonstrates the AskPath function.
 * This script obtains the path to a folder on the
 * end user's computer.  If the path does not exist, it creates
 * a folder at that location if indicated by the
 * end user.  Finally, it displays the selected path.
 *
\*-----------------------------------------------------------*/
// Include Ifx.h for built-in InstallScript function prototypes.

#include "Ifx.h"
      export prototype ExFn_AskPath(HWND);
function ExFn_AskPath(hMSI)
    STRING szMsg, svResultPath[101];
    BOOL bTargetDirOk;
begin
    // Disable the Back button in installation dialog boxes.
    Disable (BACKBUTTON);
    // Create the message to display in the AskPath dialog box.
    szMsg = "Specify a folder for the application.";
    // Initialize valid path indicator.
    bTargetDirOk = FALSE;
    repeat
        // Get a path from the user.  The default path is
        // the current value of the system variable INSTALLDIR.
        if (AskPath (szMsg, INSTALLDIR, svResultPath) = NEXT) then
            // Does the path entered by the user exist on the
            // target system?
            if (ExistsDir (svResultPath) = 0) then
                // If it exists, set indicator to exit the loop.
                bTargetDirOk = TRUE;
            else
                // If the path doesn't exists, ask if it should be created.
                 if (AskYesNo ("Folder does not exist. Create it?",YES) = YES) then
                    // Attempt to create the folder (directory).
                    if (CreateDir (svResultPath) =0) then
                        // If the folder was created, set indicator to exit the loop.
                        bTargetDirOk = TRUE;
                    else
                        // Inform the end user that the folder was not created.
                        MessageBox ("Unable to create " "+ svResultPath, WARNING);
                    endif;
                endif;
            endif;
        endif;
    until bTargetDirOk;
    // Display the name of the target folder.
    MessageBox ("The target folder is " + svResultPath, INFORMATION);
    // You'd also enable the Back button for subsequent dialog boxes.
    Enable (BACKBUTTON);
end;

0
Comment
Question by:BrianMc1958
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 30

Accepted Solution

by:
ded9 earned 500 total points
ID: 16935642
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today companies are subjected to more-and-more data, and it won't stop any time soon.  But there are obvious opportunities for reducing data, particularly data duplicated among companies.
This article describes how to use the timestamp of existing data in a database to allow Tableau to calculate the prior work day instead of relying on case statements or if statements to calculate the days of the week.
Viewers will learn how to use the Hootsuite Dashboard.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question