Custom action not finding ini values
I have a problem with a few custom actions I am using in my Installshield Basic MSI which should pick some values from existing ini files (whose location will have been discovered and passed to a property by appsearch) and then set them as MSI properties. However when I look at the msi log, the custom actions are just deleting all of the null values to these properties, which breaks the dialogs.
Here is one of the custom actions:
function WriteUserIniProperties (hMSI) STRING USERINI;
STRING szDBLangTemp;
STRING szSupportFTemp;
STRING szDescriptionTemp;
STRING szDefaultQueryTemp;
STRING szDefaultAltTemp;
STRING szWorkBookTemp;
STRING szSupportPathTemp;
STRING szDBPathTemp;
STRING szResult;
STRING szRegisteredOwner;
STRING szRegisteredOrganization;
STRING szLicenceNoTemp;
STRING szEmailTemp;
STRING szLicencePathTemp;
STRING szCompareTemp;
STRING svDescriptionTemp;
LIST listGeneric;
NUMBER nSize; begin listGeneric = ListCreate( STRINGLIST ); //This code deals with the User section of the user.ini file
MsiGetProperty (ISMSI_HANDLE, "JATOUSERDIR", USERINI, nSize);
GetProfString (USERINI, USER_SECTION, DBLANG_ENTRY, szDBLangTemp);
MsiSetProperty (ISMSI_HANDLE, "DB_LANGUAGE", szDBLangTemp);
GetProfString (USERINI, USER_SECTION, SUPPORTFILESPATH_ENTRY, szSupportFTemp);
MsiSetProperty (ISMSI_HANDLE, "SUPPORTFILESPATH", szSupportFTemp);
GetProfString (USERINI, USER_SECTION, DESCRIPTION_ENTRY, szDescriptionTemp);
if (StrLength(svDescriptionTemp)!=0)
then
listGeneric = ListCreate(STRINGLIST);
StrGetTokens(listGeneric,szResult,";");
ListGetFirstString(listGeneric,szRegisteredOwner);
ListGetNextString(listGeneric,szRegisteredOrganization);
ListDestroy(listGeneric);
endif;
MsiSetProperty (ISMSI_HANDLE, "USERNAME", szRegisteredOwner);
MsiSetProperty (ISMSI_HANDLE, "COMPANYNAME", szRegisteredOrganization);
GetProfString (USERINI, USER_SECTION, DEFAULTQUERYCURRENCY, szDefaultQueryTemp);
MsiSetProperty (ISMSI_HANDLE, "USER_DEFAULTQUERYCURRENCY", szDefaultQueryTemp);
GetProfString (USERINI, USER_SECTION, DEFAULTALTERNATECURRENCY, szDefaultAltTemp);
MsiSetProperty (ISMSI_HANDLE, "USER_DEFAULTALTERNATECURRENCY", szDefaultAltTemp);
GetProfString (USERINI, USER_SECTION, JATOWORKBOOKPATH_ENTRY, szWorkBookTemp);
MsiSetProperty (ISMSI_HANDLE, "WORKBOOKPATH", szWorkBookTemp);
GetProfString (USERINI, USER_SECTION, SUPPORTFILESPATH_ENTRY, szSupportPathTemp);
MsiSetProperty (ISMSI_HANDLE, "SUPPORTFILESPATH", szSupportPathTemp);
GetProfString (USERINI, USER_SECTION, DATABASEPATH_ENTRY, szDBPathTemp);
MsiSetProperty (ISMSI_HANDLE, "DBDIR", szDBPathTemp);
//This code deals with the Licence section of the user.ini file
GetProfString (USERINI, LICENCE_SECTION, LICENCENO_ENTRY, szLicenceNoTemp);
MsiSetProperty (ISMSI_HANDLE, "LC_LICENCENO", szLicenceNoTemp);
GetProfString (USERINI, LICENCE_SECTION, EMAIL_ENTRY, szEmailTemp);
MsiSetProperty (ISMSI_HANDLE, "EMAIL", szEmailTemp);
GetProfString (USERINI, LICENCE_SECTION, LICENCEPATH_ENTRY, szLicencePathTemp);
MsiSetProperty (ISMSI_HANDLE, "LICENCEDIR", szLicencePathTemp);
//This code deals with the Output section of the user.ini file
GetProfString (USERINI, OUTPUT_SECTION, COMPARE_SYMBOL, szCompareTemp);
MsiSetProperty (ISMSI_HANDLE, "USER_COMPARE_SYMBOL", szCompareTemp);
end;
.....and here is the section where it miswrites the properties in the log file:
MSI (c) (64:84) [16:57:23:348]: Doing action: WriteUserIniProperties
Action 16:57:23: WriteUserIniProperties.
Action start 16:57:23: WriteUserIniProperties.
MSI (c) (64:14) [16:57:23:398]: Invoking remote custom action. DLL: C:\Users\TIM~1.SHI\AppData\Local\Temp\MSI3E9F.tmp, Entrypoint: f8
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting DB_LANGUAGE property. Its current value is '1'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting SUPPORTFILESPATH property. Its current value is 'C:\ProgramData\JATO\Support\'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting USERNAME property. Its current value is '{ID_STRING4685}'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting COMPANYNAME property. Its current value is 'NULL'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting USER_DEFAULTQUERYCURRENCY property. Its current value is 'NTV'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting USER_DEFAULTALTERNATECURRENCY property. Its current value is 'EUR'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting WORKBOOKPATH property. Its current value is '[JATOUSERDIR]Workbook'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting DBDIR property. Its current value is 'C:\Users\Public\JATO\DATABASE\'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting LC_LICENCENO property. Its current value is '0'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting EMAIL property. Its current value is '{ID_STRING4681}'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting LICENCEDIR property. Its current value is '[JATOUSERDIR]'.
MSI (c) (64!74) [16:57:25:278]: PROPERTY CHANGE: Deleting USER_COMPARE_SYMBOL property. Its current value is '=='.
Action ended 16:57:25: WriteUserIniProperties. Return value 1.
Now I can appreciate that the ini file path may not be completely correct on one of the custom actions but I would find it strange if it wasn't right on all of them - one thing I was a little wary of is whether or not the double backslashes are added into paths but I have seen on another internet forum that apparently installscript is smart enough to convert over paths, which leaves me a bit stuck for ideas.