Я запускаю VBScript как пользовательское действие в части фиксации установки MSI. Сценарий вызывает .exe, который устанавливает драйверы для устройства ZB. Я хочу сначала проверить файловую систему, чтобы убедиться, что драйверы уже есть, и пропустить установку, если они есть.
Пока скрипт выглядит так:
Sub Run(ByVal sFile)
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run Chr(34) & sFile & Chr(34), 1, false
Set shell = Nothing
End Sub
Set objFSO = CreateObject("Scripting.FileSystemObject")
IF objFSO.fileExists("c:\windows\system32\drivers\ftser2k.sys") THEN
MsgBox("You already have the drivers installed.")
ELSEIF objFSO.fileExists("c:\windows\system32\ftserui2.dll") THEN
MsgBox("You already have the drivers installed.")
ELSE
Run Session.Property("CustomActionData") & "CDM20600.exe"
END IF
Эти файлы существуют на моей машине. Так что, если я дважды щелкну файл VBS, я получу MsgBox, сообщая, что у меня уже есть файл. Однако, когда я запускаю установку msi, независимо от того, что устанавливает драйвер, как будто первых двух условных выражений даже не было. Я прочитал, что вы не можете использовать объект WScript в MSI, поэтому я вынул строки WScript.Echo и заменил их на MsgBox. Мне было интересно, если вы не можете использовать FileSystemObject в MSI либо.
Моя конечная цель - не давать никаких сообщений. Я просто хочу, чтобы установка драйвера была пропущена, если файлы присутствуют в системе. Сообщения там только для целей отладки.
Если это поможет, пакет msi был собран в Visual Studio 2010. Также CustomActionData - это TARGETDIR.
Я новичок как в VBScript, так и в установочных пакетах, поэтому, пожалуйста, будьте осторожны:)