のInstallShieldでのデバッグVBスクリプトは、首の痛みです。
また、InstallShieldからレジストリを読み書きすることは、winmgmtsを介して行うことができますが、それは痛みです。ログファイルに書き込むことは最善です。 。これを実証する例を次に示します。私たちのアプリは32ビットレジストリキーを使用しており、32ビットまたは64ビットのWindowsで処理されているかどうかわからなかったので、32ビットレジストリキー(Wow6432Node)の両方の場所を確認する必要がありました。
ここでは、レジストリを読み取るために使用されるいくつかのコードです:
Option Explicit
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Dim SoftVersion
SoftVersion = RegReadString("HKLM\SOFTWARE\Co\Software\Version")
If SoftVersion = "" Then
SoftVersion = RegReadString("HKLM\SOFTWARE\Wow6432Node\Co\Software\Version")
End If
Function RegReadString(path)
' RegRead = CreateObject("WScript.Shell").RegRead(path)
Dim objReg, hkroot, pos, posNext, keyPath, valueName, value
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
hkroot = HKEY_CURRENT_USER
If Left(path, 5) = "HKCU\" Then
hkroot = HKEY_CURRENT_USER
path = Mid(path, 6)
ElseIf Left(path, 5) = "HKLM\" Then
hkroot = HKEY_LOCAL_MACHINE
path = Mid(path, 6)
End If
pos = InStr(path, "\")
posNext = InStr(pos + 1, path, "\")
While posNext > 0
pos = posNext
posNext = InStr(pos + 1, path, "\")
Wend
keyPath = Left(path, pos - 1)
valueName = Mid(path, pos + 1)
objReg.GetStringValue hkroot, keyPath, valueName, value
If IsNull(value) Then
RegReadString = ""
Else
RegReadString = value
End If
End Function
Sub RegWriteString(path, value)
Dim objReg, hkroot, pos, posNext, keyPath, valueName
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
hkroot = HKEY_CURRENT_USER
If Left(path, 5) = "HKCU\" Then
hkroot = HKEY_CURRENT_USER
path = Mid(path, 6)
ElseIf Left(path, 5) = "HKLM\" Then
hkroot = HKEY_LOCAL_MACHINE
path = Mid(path, 6)
End If
pos = InStr(path, "\")
posNext = InStr(pos + 1, path, "\")
While posNext > 0
pos = posNext
posNext = InStr(pos + 1, path, "\")
Wend
keyPath = Left(path, pos - 1)
valueName = Mid(path, pos + 1)
objReg.SetStringValue hkroot, keyPath, valueName, value
End Sub
`` `
私はinstallscriptに慣れていないので、これを答えとして追加していませんが、一般的には[コマンドラインからvbsを呼び出すことができます](https://technet.microsoft.com/en) 'cscript.exe/path/to/your.vbs'を使って-us/library/bb490816.aspx?f = 255とMSPPError = -2147217396)を入力してください。 – JNevill
@JNevill - あなたの考えに感謝します。私はそれを持っているので、ISはvbsスクリプトを起動するのに十分なほどスマートです。 IS UIの特異性のために、私は「条件」を正しく指定していませんでした。私はまだ私が望む行動を得るためにいくつかのフープを飛び越えなければならないが、少なくとも私は正しい道にいる。 –
それは素晴らしいニュースです!あなたが望むのであれば、あなたの解決策を答えとして追加して、そのようにマークすることができます。将来、他の誰かが同じ問題に悩まされている場合は、このように助けが必要です。 – JNevill