lstrcpy(szProcessFilename, sgProduct.szParentProcessFilename);
ParsePath(sgProduct.szParentProcessFilename, szProcessFilename, sizeof(szProcessFilename), FALSE, PP_FILENAME_ONLY);
void PrintUsage(void){  char szBuf[MAX_BUF];  char szUsageMsg[MAX_BUF];  char szProcessFilename[MAX_BUF];  /* -h: this help   * -a [path]: Alternate archive search path   * -app: ID of application which is launching the installer  (Shared installs)   * -app_path: Points to representative file of app (Shared installs)   * -dd [path]: Suggested install destination directory. (Shared installs)   * -greLocal: Forces GRE to be installed into the application dir.   * -greShared: Forces GRE to be installed into a global, shared dir (normally   *    c:\program files\common files\mozilla.org\GRE   * -reg_path [path]: Where to make entries in the Windows registry. (Shared installs)   * -f: Force install of GRE installer (Shared installs), though it'll work   *    for non GRE installers too.   * -greForce: Force 'Component GRE' to be downloaded, run, and installed.  This   *    bypasses GRE's logic of determining when to install by running its   *    installer with a '-f' flag.   * -n [filename]: setup's parent's process filename   * -ma: run setup in Auto mode   * -mmi: Allow multiple installer instances. (Shared installs)   * -showBanner: Show the banner in the download and install process dialogs.   *              This will override config.ini   * -hideBanner: Hides the banner in the download and install process dialogs.   *              This will override config.ini   * -ms: run setup in Silent mode   * -ira: ignore the [RunAppX] sections   * -ispf: ignore the [Program FolderX] sections that show   *        the Start Menu shortcut folder at the end of installation.   */  if(sgProduct.szParentProcessFilename && *sgProduct.szParentProcessFilename != '\0')    lstrcpy(szProcessFilename, sgProduct.szParentProcessFilename);  else  {    GetModuleFileName(NULL, szBuf, sizeof(szBuf));    ParsePath(szBuf, szProcessFilename, sizeof(szProcessFilename), FALSE, PP_FILENAME_ONLY);  }  GetPrivateProfileString("Strings", "UsageMsg Usage", "", szBuf, sizeof(szBuf), szFileIniConfig);  if (lstrlen(szBuf) > 0)  {    char strUsage[MAX_BUF];    ReplacePrivateProfileStrCR(szBuf);    _snprintf(szUsageMsg, sizeof(szUsageMsg), szBuf, szProcessFilename);    GetPrivateProfileString("Messages", "DLG_USAGE_TITLE", "", strUsage, sizeof(strUsage), szFileIniInstall);    MessageBox(hWndMain, szUsageMsg, strUsage, MB_ICONEXCLAMATION);  }}