Kinook Software Forum

Kinook Software Forum (https://www.kinook.com/Forum/index.php)
-   [VBP] General Discussion (https://www.kinook.com/Forum/forumdisplay.php?f=2)
-   -   Programmatically creating an action (https://www.kinook.com/Forum/showthread.php?t=5300)

HippyCraig 09-22-2014 09:32 AM

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

-2147483647
Software\Microsoft\VisualStudio\12.0_Config\MSBuil d
0
EnableOutOfProcBuild
4
0
2
VS2013 MSI Project Update


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

kinook 09-22-2014 10:08 AM

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.

HippyCraig 09-22-2014 10:13 AM

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

4

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?

kinook 09-22-2014 11:33 AM

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)

HippyCraig 09-22-2014 12:06 PM

It works perfectly now thanks so much!

HippyCraig 05-08-2015 02:00 PM

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


-1 ----------------------
SUB TEMP New Shares Add
0 ------------------------
2
TEMP New Shares Add


Thanks

kinook 05-08-2015 02:41 PM

To reduce file size, properties that are set to the default value for a property are not stored in the .bld file.

HippyCraig 05-08-2015 02:53 PM

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?

HippyCraig 05-08-2015 04:19 PM

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?

kinook 05-08-2015 04:25 PM

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).

HippyCraig 05-08-2015 04:44 PM

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 12:10 PM.


Copyright © 1999-2023 Kinook Software, Inc.