在尝试通过“自定义操作”中的VBscript设置公共变量时,我当前遇到问题。
关于属性"MYDOMAIN"
。
无论我在做什么,该值始终为0。
即使在示例";"
之后设置Session.Property("MYDOMAIN")="1"
也不能解决问题。
在本地执行VBScript时,可以检索值(至少在变量中)。
请在下面找到我的脚本:
'~~~ Query My Domain
Option Explicit
'On Error Resume Next
Dim objWMISvc : Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
Dim colItems : Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem" )
Dim objSysInfo : Set objSysInfo = CreateObject("ADSystemInfo")
Dim objComp : Set objComp = GetObject("LDAP://" & objSysInfo.ComputerName)
Dim objCompDN : objCompDN = objComp.distinguishedName
Dim objItem
Dim strComputerDomain
Dim Session
For Each objItem in colItems
strComputerDomain = objItem.Domain
' If objItem.PartOfDomain Then
' WScript.Echo "Computer Domain: " & strComputerDomain
' Wscript.Echo "Computername: " & strComputerName
' End If
Next
If strComputerDomain = "DOMAIN1.loc" Then
Session.Property("MYDOMAIN")="1"
elseif strComputerDomain = "DOMAIN2.loc" Then
call CheckIRL(objCompDN,"(?:Division-)(8[0-9]\d{1,2}|982)-")
elseif strComputerDomain = "DOMAIN3.loc" Then
Session.Property("MYDOMAIN")="3"
Else
if strComputerDomain = "" then
Session.Property("MYDOMAIN")="0"
End if
End if
Sub CheckIRL(strReturnValue, strPattern)
Dim objRegEx : set objRegex = new RegExp
objRegex.pattern = strPattern
objRegex.global = true
If objRegex.Test( strReturnValue ) Then
Session.Property("MYDOMAIN") = "6"
Else
Session.Property("MYDOMAIN") = "7"
End If
End Sub
Sub CheckSLO(strReturnValue, strPattern)
Dim objRegEx : set objRegex = new RegExp
objRegex.pattern = strPattern
objRegex.global = true
If objRegex.Test( strReturnValue ) Then
Session.Property("MYDOMAIN") = "4"
Else
Session.Property("MYDOMAIN") = "5"
End If
End Sub
说实话:我没有主意... 一位朋友将脚本插入InstallShield项目中,可以解析该属性。任何想法表示赞赏:)
答案 0 :(得分:0)
我建议您尝试通过在VBS代码的每个IF块中插入一个消息框(MsgBox function)来调试VBS操作代码。这只是为了确保您的VBS代码在退出之前确实将相关属性设置为不同于0的值。
只需使用MsgBox语句,如下所示:
MsgBox Session.Property("MYDOMAIN")
显示属性值。
然后,如果VBS确实在退出前确实将属性设置为不同于0的值,则在这种情况下,当该属性恢复为0时,我们将需要有关确切执行顺序的更多详细信息。
答案 1 :(得分:0)
我会尝试一下,检查后会再次给您。 同时,我创建了第二个msi文件来进行配置...不是最好的解决方案,但它似乎可以工作:)