Ho un VBScript che ho scritto che deve essere eseguito da un file MSI. Lo script viene eseguito correttamente quando l'eseguo all'interno di Windows da solo, tuttavia, quando l'eseguo dal programma di installazione ricevo il seguente errore come indicato nel file di registro:VBScript non verrà eseguito correttamente dal file MSI
Microsoft VBScript runtime error: object required: 'WScript', Line 3, Column 2
Lo script è qui sotto:
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
Come detto in precedenza, questo script funziona correttamente se viene eseguito al di fuori del contesto dell'installer. Il tipo di progetto di installazione è VS2010 Setup and Deployment Package (questo è ciò che il cliente desidera utilizzare e non posso usare altro). Qualche idea?
Gli oggetti WScript non sono supportati nei file VBS in esecuzione come azione personalizzata. Se è necessario utilizzare questo tipo di oggetto, il metodo sopra riportato è l'unico in funzione. Un altro lato, le azioni personalizzate VBS non sono la mia prima raccomandazione, ma tutto dipende dal tempo disponibile per la creazione del pacchetto di installazione. Le azioni personalizzate VBS presentano molti rischi, come il blocco antivirus o errori del motore Vscript e molti altri. Una DLL Win32 sarebbe la scelta migliore per un'azione personalizzata. –
Fondamentalmente, ho questo script, quindi un altro script per creare collegamenti inclusi all'interno di un modulo di unione (i progetti di installazione e distribuzione non offrono la possibilità di collegarsi ai file all'interno dei moduli unione) e uno script che rimuove i suddetti collegamenti alla disinstallazione . Sono andato al percorso vbs per risparmiare tempo in quanto non ho tempo per imparare come creare una DLL di azioni personalizzate. –