Запуск VBScript из установки MSI - PullRequest
0 голосов
/ 20 марта 2012

Я запускаю 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, так и в установочных пакетах, поэтому, пожалуйста, будьте осторожны:)

1 Ответ

2 голосов
/ 20 марта 2012

Я должен быть честным, у меня много опасений по поводу предложенного вами решения:

1) VB / JScript CA Suck . Я бы прочитал ссылку и принял ее близко к сердцу.

2) Я видел много машин в моей карьере, где FSO был сломан.

3) Вы жестко закодировали путь к System32 вместо использования SystemFolder или System64Folder.

4) Фиксация пользовательских действий не выполняется, когда откат отключен.

5) Вы выполняете двойной процесс без регистрации ошибок при вызове EXE.

6) Проекты развертывания Visual Studio отстой во многих отношениях, которые я не могу сосчитать. Свидетельство тому, что Micrsoft убил их в Visual Studio 11.

Если бы это был я, я бы спросил, нужно ли вам использовать этот EXE-файл для установки пакета драйвера или есть ли INF-файл для файлов SYS / DLL. Если это так, я бы посмотрел на создание модуля слияния WiX, который использует DifxAppExtension . Это позволяет вам инкапсулировать поведение установки драйвера в отдельный модуль, а затем добавить его в установщик VDPROJ или, что еще лучше, в установщик WiX или InstallShield Limited Edition (бесплатный).

Вот несколько статей в блоге, которые должны помочь вам понять, что я имею в виду:

Дополнение InstallShield с помощью установщика Windows XML - сертификаты

Дополнение InstallShield с помощью установщика Windows XML - Службы Windows

Погашение проектов развертывания Visual Studio

...