Lancement de script VBS a partir d'un script VB - VB/VBA/VBS - Programmation
Marsh Posté le 08-03-2006 à 08:39:36
Voila la partie de code de mon VB qui vloque selon moi :
MsgBox "starting installation"
errReturn = Shell("wscript.exe ""SetupLaunch.vbs""" )
MsgBox errReturn
Marsh Posté le 08-03-2006 à 10:00:38
La question est intéressante et expliquée en détail, donc il serait domage que personne n'y réponde. Aussi, je vais essayer d'intervenir bien que je ne dispose pas de VB et ne puisse pas faire de tests, et que je vais peut-être raconter des bêtises.
1. Dans ce cas là, faut-il utiliser wscript.exe ?
Peut-être que ça marcherait mieux avec cscript.exe.
2. Pourquoi mettre des guillemets autour de SetupLaunch.vbs ?
Les guillemets ne sont utiles que lorsque le nom du fichier contient des espaces.
3. Ne serait-il pas plus prudent de mettre le chemin complet plutôt que le nom d'un fichier ?
C'est-à-dire errReturn = Shell("wscript.exe c:\toto\SetupLaunch.vbs" )
4. Est-ce que ça marche si on remplace SetupLaunch.vbs par un fichier qui ne contiendrait qu'une seule ligne qui serait Wscript.Echo "coucou" ?
5. Est-ce que c'est l'instruction shell ou system qu'il faut utiliser ?
Marsh Posté le 08-03-2006 à 10:19:15
Merci de ta reponse, je repond rapidement au test que j'ai deja realiser et je tente les autres :
1 - Le resultat est identique avec cscript
2 - Je recois la meme erreur avec ou sans les guillemets
3 - Je recois toujours la meme erreur, meme en mettant le chemin du fichier.
4 - Ca marche par exemple si on remplace le .vbs par un .exe
5 - Je pense que c'est l'introduction shell, mais je vais tester avec system.
Merci pour ta reponse
Marsh Posté le 08-03-2006 à 11:03:25
J'ai remarquer qu'il faut que mon script soit lance dans le meme repertoire que le vbs et les fichier config pour que cela marche.
Bizarre non ?
Marsh Posté le 08-03-2006 à 13:23:59
Ayyye j'ai resolu mon probleme tout eest la :
http://support.microsoft.com/default.aspx/kb/276011
Marsh Posté le 07-03-2006 à 13:26:59
Salut tout le monde,
Je vous explique mon probleme qui me hante depuis deja 3 jours.
Je dois lancer un script VBS qui se trouve dans un certains repertoire accompagne de certains fichier config propre a l'installation d'un certain programme.
J'ai besoin de lancer ce script VBS a partir d'un autre script VB que l'administrateur a fait, le probleme est que je recupere l'erreur suivante :
Line 14
Char 1
Error File not found
Code 800A0035
source Microsoft VBScript runtime error
Et quand je lance le VBS direcement sans passer par le VB tout se passe bien.
J'aimreais donc avoir votre opinion sur le sujet, j'ai pense a integrer directement mon VBS a mon VB mais je ne c'est pas comment faire.
Merci de votre aide.
Ici mon fichier VBS, je suis desole j'arrive pas a faire de quote et j'ai pas eu le temps de mettre les balise.
Set WshShell = WScript.CreateObject("WScript.Shell" )
Dim path : path = WshShell.ExpandEnvironmentStrings("%SystemRoot%\temp\3rdParty" )
Dim installdir : installdir = WshShell.ExpandEnvironmentStrings("%SystemDrive%\Program Files\eEye Digital Security\Blink" )
Dim backuppath : backuppath = installdir
Dim tmppath : tmppath = ""
Dim newpath : newpath = ""
Dim TristateFalse : TristateFalse= 0
Dim filesys, file, ts
Const ForAppending = 8
Const ForReading = 1
Set filesys = CreateObject("Scripting.FileSystemObject" )
Set file = filesys.GetFile("settings.txt" )
Set ts = file.OpenAsTextStream( ForReading )
'parse the MSI options file and see if the expanded paths are present
Do While Not ts.AtEndOfStream
if InStr(ts.ReadLine, "INSTALLDIR=" ) > 0 Then
AlreadyModified = 1
End if
Loop
if AlreadyModified = 0 Then
'Append the expanded paths to the MSI configuration file (settings.txt)
Set ts = file.OpenAsTextStream( ForAppending )
ts.WriteLine("INSTALLDIR=" & installdir)
ts.WriteLine("THIRDPARTY=" & path & "\eeyeremoteinstall.exe" )
ts.Close
End If
Dim nIndex
nIndex = InStr(backuppath, "\" )
while nIndex > 0
tmppath = Left(backuppath, nIndex)
backuppath = Right(backuppath, Len(backuppath) - nIndex)
newpath = newpath + tmppath
If Not filesys.FolderExists(newpath) Then
Set newfolder = filesys.CreateFolder(newpath)
End If
nIndex = InStr(backuppath, "\" )
Wend
If Len(backuppath) > 0 Then
newpath = newpath + backuppath
If Not filesys.FolderExists(newpath) Then
Set newfolder = filesys.CreateFolder(newpath)
End If
End If
path = WshShell.ExpandEnvironmentStrings("%SystemRoot%" ) & "\temp"
'create c:\windows\temp\3rdparty
if filesys.FolderExists(path) = 0 Then
filesys.CreateFolder(path)
End If
if filesys.FolderExists(path & "\3rdparty" ) = 0 Then
path = path & "\3rdparty"
filesys.CreateFolder(path)
End If
path = WshShell.ExpandEnvironmentStrings("%SystemRoot%\temp\3rdParty" )
'get the current folder
set file = filesys.GetFile("settings.txt" )
filesys.CopyFolder file.ParentFolder , path
Set WshShell = WScript.CreateObject("WScript.Shell" )
WshShell.Run "cmd /K CD " & path & " & Setup /qn /qb+ /Liom " & chr(34) & installdir & "\BlinkSetup.log" & chr(34) & " OPTIONFILE=" & chr(34) & path & "\settings.txt" & chr(34)