Tôi có một VBScript mà tôi đã viết cần được thực thi từ một tệp MSI. Các kịch bản thực hiện một cách chính xác khi tôi chạy nó trong Windows trên riêng của mình, tuy nhiên, khi tôi chạy nó từ trình cài đặt tôi nhận được lỗi sau như thể hiện trong file log:VBScript sẽ không thực thi chính xác từ tệp MSI
Microsoft VBScript runtime error: object required: 'WScript', Line 3, Column 2
kịch bản là dưới đây:
sub shell(cmd)
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("""" & cmd & """")
Set objShell = Nothing
end sub
set objFSO = CreateObject("Scripting.FileSystemObject")
strcmd32 = "C:\Path\PathToExecutable.exe"
strcmd64 = "C:\Path\PathToExecutable64.exe"
if (objFSO.FileExists(strcmd32)) then
shell(strcmd32)
else
shell(strcmd64)
end if
set objFSO = Nothing
Như đã nêu trước đó, tập lệnh này chạy tốt nếu tôi chạy nó bên ngoài ngữ cảnh của trình cài đặt. Kiểu dự án thiết lập là gói cài đặt và triển khai VS2010 (đây là những gì khách hàng muốn sử dụng và tôi không thể sử dụng bất kỳ thứ gì khác). Ý tưởng nào?
Đối tượng WScript không được hỗ trợ trong tệp VBS chạy dưới dạng hành động tùy chỉnh. Nếu bạn cần sử dụng kiểu đối tượng này thì phương thức trên là phương thức duy nhất hoạt động. Một mặt khác, hành động tùy chỉnh của VBS không phải là đề xuất đầu tiên của tôi, nhưng tất cả phụ thuộc vào thời gian bạn có sẵn để tạo gói cài đặt. Các hành động tùy chỉnh của VBS đi kèm với rất nhiều rủi ro, chẳng hạn như chống virus hoặc công cụ vscript thất bại nhiều thứ khác. Một Win32 DLL sẽ là sự lựa chọn tốt nhất cho một hành động tùy chỉnh. –
Về cơ bản, tôi có tập lệnh này, sau đó một tập lệnh khác để tạo lối tắt được bao gồm bên trong mô-đun hợp nhất (Dự án thiết lập và triển khai không cung cấp khả năng liên kết đến tệp trong mô đun hợp nhất) và tập lệnh xóa các phím tắt đã được gỡ cài đặt . Tôi đã đi các tuyến đường vbs để tiết kiệm thời gian như tôi không có thời gian để tìm hiểu làm thế nào để tạo một DLL hành động tùy chỉnh. –