- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Write multiple properties into registry at once
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
Write multiple properties into registry at once
All,
The flow of my current Basic MSI setup is as follows:
1. Create a custom action 'MakePropertiesAvailableForRegistryInsertX'
2. Create a custom action 'CallInstallScriptThatInsertsProperty'
3. The InstallScript has the following:
export prototype CreateProcessInParallelRegistryKeyAndSetValue(HWND);
function CreateProcessInParallelRegistryKeyAndSetValue(hMSI)
STRING szKey, szNumName, szNumValue, svNumValue, szTitle, szMsg;
NUMBER nType, nSize, nvType, nvSize;
begin
szKey = "Gomocha";
// Create "Gomocha" registry key in HKEY_CLASSES_ROOT
if (RegDBCreateKeyEx (szKey, "") < 0) then
MessageBox ("Creating the registry key failed.", SEVERE);
abort;
endif;
nvSize = MAX_PATH;
MsiGetProperty(hMSI, "CustomActionData", szNumValue, nvSize);
szNumName = "ProcessInParallel";
nType = REGDB_STRING;
nSize = -1;
RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue, nSize);
end;
For each property that I want in the registry, I follow the above 3 steps, which can get ugly when I have 20+ properties that I would like to set.
What I would like is the following:
Insert a property into registry at Gomocha\ComponentName\Property1
Insert a property into registry at Gomocha\ComponentName\Property2
I tried adding multiple properties into the installscript by passing in the following into the 'MakePropertiesAvailable' custom action: [PROPERTY1];[PROPERTY2];[PROPERTY3];
But that resulted in szNumValue to be showing up empty in the messagebox:
export prototype CreateGatewayFileAdapterRegistryKeyAndSetValue(HWND);
function CreateGatewayFileAdapterRegistryKeyAndSetValue(hMSI)
STRING szKey, szNumName, szNumValue, svNumValue, szTitle, szMsg;
NUMBER nType, nSize, nvType, nvSize;
begin
szKey = "Gomocha";
// Create "Gomocha" registry key in HKEY_CLASSES_ROOT
if (RegDBCreateKeyEx (szKey, "") < 0) then
MessageBox ("Creating the registry key failed.", SEVERE);
abort;
endif;
nvSize = MAX_PATH;
MsiGetProperty(hMSI, "CustomActionData", szNumValue, nvSize);
MessageBox ("CustomActionData" + szNumValue, SEVERE);
szNumName = "XSLTPath";
nType = REGDB_STRING;
nSize = -1;
RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue, nSize);
szNumName = "ExportedPath";
RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue[1], nSize);
szNumName = "SortImportFilesByFileName";
RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue[2], nSize);
szNumName = "ProcessInParallel";
RegDBSetKeyValueEx (szKey, szNumName, nType, szNumValue[3], nSize);
end;
I probably have to split the szNumValue into a list using StrGetTokens? Could someone provide an example?
Is there a better way to "debug" installscript? Instead of adding the MessageBox(szNumValue, SEVERE)?