![]() |
Programmatically creating an action
I am creating a script to modify multiple scripts. I have a loop function that goes in and cycles through all our script files and tries to create a "Write Registry" step in the script, I have the index figured out so its really an issue with recreating the steps through vbscript. I have the following so far:
'Create Sub Call Option Explicit Dim objApp, objStep, iNewIndex Set iNewIndex = Application.Macros(vbldMacroTemporary).Item("TMP_NEW_INDEX") ' create VisBuildPro app object Set objApp = CreateObject("VisBuildSvr8.Application") objApp.Project.Load "%PROCFILES_FULLPATH%" Set objStep = objApp.Project.Steps(vbldStepMain).Add("Write Registry", iNewIndex) objStep.Name = "VS2013 MSI Project Update" objStep.Indent = 3 objStep.Checked = False objStep.Property("RootKey") = -2147483647 objStep.Property("SubKey") = "Software\Microsoft\VisualStudio\12.0_Config\MSBuil d" objStep.Property("ValueData") = 0 objStep.Property("ValueName") = "EnableOutOfProcBuild" objStep.Property("ValueType") = 4 objApp.Project.Save Here is the XML from the Step I am trying to recreate My question is around RootKey, ValueType, and indent, how do I set the Type paramater and the actual value in my script sample above. PS using VB 8.7 |
The KeyRoot property values are:
-2147483647 = HKEY_CURRENT_USER -2147483648 = HKEY_CLASSES_ROOT -2147483646 = HKEY_LOCAL_MACHINE The ValueType property values are: 1 = String 4 = DWORD The ValueData property holds the value to be assigned, and can be a string or integer value. The indent property indicates the indent level of the step as shown in the step grid. |
How can I set the type to be a specific value for type in the properties of the XML element?
The output of the XML looks the same except for ValueType its Type value is set to 2 instead of 3 I assume the following Type ='3' is equal to integer Type not set is equal to string What are the other values that this can be set to and how do I set them? |
2 is 2-byte integer, 3 is 4-byte integer.
http://msdn.microsoft.com/en-us/library/cc237865.aspx Either one is fine, but to explicitly set to 3, use objStep.Property("ValueType") = CLng(4) |
It works perfectly now thanks so much!
|
I am making another update I am trying to create a Sub call using the following code:
Set objStep = objApp.Project.Steps(vbldStepMain).Add("Subroutine Call", iNewIndex + 1) objStep.Name = "TEMP New Shares Add" objStep.Indent = 2 objStep.Checked = True objStep.Property("SubName") = "SUB TEMP New Shares Add" objApp.Project.Save This works but there are two line items that are not getting genereated, if I look at the source of the script the lines with the ----- do not appear, what do I need to add to the above code to create BuildFailstops and ExpandType Thanks |
To reduce file size, properties that are set to the default value for a property are not stored in the .bld file.
|
When I add the action manually to the script it creates these setting looking at the source of the script, if I do it progamaitcially these items are omitted. How can I add them even if there the default settings?
|
so I updated it to the following and it seems to be ok
Set objStep = objApp.Project.Steps(vbldStepMain).Add("Subroutine Call", iNewIndex + 1) objStep.Name = "TEMP New Shares Add" objStep.Indent = 2 objStep.Checked = True objStep.Property("SubName") = "SUB TEMP New Shares Add" objStep.Property("Expand") = CBool(-1) objStep.Property("buildfailsteps") = CBool(0) objApp.Project.Save is this correct? |
Yes, or
objStep.Property("Expand") = True objStep.Property("buildfailsteps") = False I should have also mentioned that the default for buildfailsteps is -1 (True) and Expand is 0 (False). |
Thanks,
I first tried to use true and false but the type was wrong in the final file, using the CBool set the correct type to '11' |
All times are GMT -5. The time now is 08:39 PM. |
Copyright © 1999-2023 Kinook Software, Inc.