Installation d'installation

Résolu
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 - 26 nov. 2007 à 14:53
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 - 3 déc. 2007 à 14:49
Bonjour tout le monde,
Me revoilà avec une nouvelle question.
J'ai plusieurs kit d'installation à lancer pour une application modulaire.
Comment faire pour générer un setup global dans visual studio ; ou alors que faut-il faire pour exécuter un kit l'un après l'autre en attendant la fin respective de chaque kit ?
J'ai essayé avec un .bat mais ça lance tout les kit en même temps.
J'ai essayé avec Process.Start... idem.

Merci pour vos réponses.
 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />

3 réponses

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
3 déc. 2007 à 14:49
Voilà la solution,

    Private Sub ShellWait(ByVal sCommand As String)
        Dim iProcID As Integer
        Dim oNewProc As Diagnostics.Process

        oNewProc = Diagnostics.Process.Start(sCommand)
        iProcID = oNewProc.Id
        oNewProc.WaitForExit()
        Dim iProcEC As Integer = -1

        If oNewProc.HasExited Then
            iProcEC = oNewProc.ExitCode
        End If
    End Sub

 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
3
Profil bloqué
26 nov. 2007 à 22:43
Je ne sais pas si cela t'aidera car cela ne correspond peut-être pas à ton problème et c'est du Vb6.0 mais l'idée est peut-etre transposable en VB.net










Comment lancer un programme de façon synchrone depuis un programme
VB? Comment attendre la fin de l'exécution d'un programme lancé depuis
VB?


Dans l'article 7 Comment exécuter un autre programme depuis une application VB ?,
on a présenté plusieurs façons simples de lancer un autre programme
depuis un programme VB. Dans les exemples présentés, les lancements se
faisaient de façon asynchrone, c'est à dire que le programme était
lancé depuis VB, puis le programme VB continuait son exécution.



On peut aussi vouloir lancer une application et attendre la fin de son
exécution pour continuer. On parle dans ce cas de lancement synchrone.



Pour cela, on utilise ShellExecute et les API OpenProcess et WaitForSingleObject .

La fonction suivante, "ShellWait", est un exemple d'implémentation de ceci :




Option Explicit   




Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long   
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long   
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long   
Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long   

Private Function ShellWait(ByVal vCommand As String) As Boolean   


    Dim mProcess As Long   

    Dim mRet As Long   

    Dim mPID As Long   

    Dim bRet As Boolean   

       

    On Error GoTo ShellWait_Error   


    mPID = Shell(vCommand, vbMinimizedNoFocus)   

    mProcess = OpenProcess(&H1F0FFF, 0, mPID)   

    Do   

        mRet = WaitForSingleObject(mProcess, 1000)   

        If mRet <> &H102& Then   

            bRet = True   

            Exit Do   

        End If   

        DoEvents   

    Loop   

    CloseHandle mProcess   

ShellWait_OK:   

    On Error GoTo 0   

    Exit Function   


ShellWait_Error:   

    bRet = False   

    Resume ShellWait_OK   
End Function

La fonction ShellWait attend que l'application Command soit finie avant de continuer

GRENIER Alain
0
Profil bloqué
26 nov. 2007 à 22:50
http://faq.vb.free.fr/index.php?question=152

http://support.microsoft.com/default.aspx?scid=KB;EN-US;q129796

Ci dessus 2 adresses Internet évoquant le problème ci-dessus

Bon courage et A+
0
Rejoignez-nous