Lancement de script VBS a partir d'un script VB

Lancement de script VBS a partir d'un script VB - VB/VBA/VBS - Programmation

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)
 

Reply

Marsh Posté le 07-03-2006 à 13:26:59   

Reply

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

Reply

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 ?

Reply

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

Reply

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 ?

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed