Lancement sur CD .

Résolu
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 2 févr. 2007 à 18:14
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 5 févr. 2007 à 07:32
Bonjour à tous.
Je viens de créer une application pour executer et installer un programme après vérification d'un sérial. Ce dernier est un vérificateur de clé, il est censé aprés vérification de l'authenticité du sérial
lancer automatiquement les fichiers d'install qui seront contenus sur un cd. J'ai trouvé un code pour lancer les fichiers:

Dim proc As New Process

        proc.StartInfo.FileName = "C:\...\...\..."

        proc.Start()

Mais je me suis posé une question: Pour executer un fichier, il faut son chemin, or tout le monde n'a pas la meme lettre dans le chemin de lecteur cd non ???
Comment faire ???
Merci d'avance.

12 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
3 févr. 2007 à 14:24
Salut,

Essaies ce code pour voir, il fonctionne très bien chez moi

PS : il faut déclarer avant Imports System.IO

Voici le code :



Dim chemin As String = "setup.exe"
        ' Spécifier le chemin d'accès du fichier sans la lettre du lecteur
        ' Exemple : si le fichier à lancer c'est "X:\installation\setup.exe" où X est la lettre du lecteur inconnu
        ' il faut mettre dans chemin "installation\setup.exe"
        Dim process As New Process ' Definit un nouveau process

        For Each disque As String In Directory.GetLogicalDrives() ' Parcours toutes les disque logiques présent sur la machine
            Dim D As New DriveInfo(disque) ' Déclaration et instanciation du lecteur pour obtenir des infos dessus
            If D.DriveType = DriveType.CDRom Then ' Vrai si le disque est un CD-Rom
                Try ' Try permet d'intercepter une erreur et permet de la traiter avec catch
                    If My.Computer.FileSystem.FileExists(disque + chemin) = True Then ' Test si le fichier existe
                        process.StartInfo.FileName = disque + chemin ' Définit le fichier à lancer
                        process.Start() ' Démarre le processus et donc lance le fichier
                    End If
                Catch ex As Exception ' Catch permet de traiter une erreur s'il y en a une
                    MsgBox(ex.Message) ' Affiche un message à l'utilisateur du type d'erreur
                End Try
            End If
        Next
    End Sub
(Coloration syntaxique automatique par Kenji)
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
5 févr. 2007 à 06:20
Salut,

      Généralement, voici où tu dois mettre Imports System.IO

Imports System.IO
Public Class Form1

End Class

Voilà c'est ici qu'il faut le mettre ( si tu comprends toujours pas je mettrais un bout de code pour une Form et tu verras où il se place) mais là normalement tu devrais comprendre...

@+
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 févr. 2007 à 18:21
Soit en utilisant les chemins relatifs, soit en récupérant le répertoire de lancement de ton appli et en déduire la lettre du lecteur de cd

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
2 févr. 2007 à 18:28
Merci mais comment je fais pour récuperer le répertoire de lancement de mon appli et surtout pour en déduire la lettre du lecteur de cd ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 févr. 2007 à 19:12
Pour le chemin de l'executable, regarde du coté de Application.ExecutablePath

Pour en extraire la racine du disque utilise la methode System.IO.Path.GetPathRoot

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
2 févr. 2007 à 20:29
J'ai trouvé ce code:

<li>DeclareFunction GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive AsString) AsLong</li><li>PublicFunction LettreCDROM()
</li><li>For Lecteurs = 0 To Form1.Drive1.ListCount - 1
</li><li> LV = GetDriveType(Left(Form1.Drive1.List(Lecteurs), 1) & ":")</li><li>If LV 5 ThenExitFor</li><li>Next</li><li> LettreCDROM Left$(Form1.Drive1.List(Lecteurs), 1)
</li><li>EndFunction</li><li>
</li><li>' Pour trouver la lettre du CD-ROM, mettez ce code dans un Bouton_Click :</li><li>
</li><li> MsgBox ("La Lettre du lecteur CD-ROM est : " & LettreCDROM)</li>

Mais chez moi il ne marche pas ! Ou alors je ne sais pas faire!
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 févr. 2007 à 21:01
Ce code est pour VB6 et toi, tu es en .net, il afut donc modifier le type des variables passées à l'api
Par exemple, le Long devient Integer.

Ce code va te retourner la lettre du premier lecteur de type CDROM déclaré dans le système. Ca ne te donne pas explicitement la lettre du lecteur depuis lequel est executé ton appli.

Si dans la majorité des cas, un seul lecteur est installé, il peut exister des farfelus qui auront plusieurs lecteurs de cdrom dans leur machine. Et dans ce cas là, l'apli ne sera pas forcément executée depuis le premier lecteur.

C'est mon cas, 5 lecteurs cdrom, un physique, 4 virtuels et normalement mon lecteur physique devra apparaitre comme le second lecteur de cd (F:) car j'ai d'abord un lecteur virtuel (E:) pour contrer une appli qui va systématiquement chercher le disque justement sur le premier lecteur déclaré.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
2 févr. 2007 à 21:27
Ok merci bien pour ton explication
Et finalement, que dois-je faire ???
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
2 févr. 2007 à 22:05
Essaye ce code :

Dim chemin As String = Application.ExecutablePath
Dim lettre As String = System.IO.Path.GetPathRoot(chemin)
lettre = lettre.Substring(0, lettre.IndexOf(System.IO.Path.VolumeSeparatorChar))

Console.WriteLine("Le chemin de
lancement de l'appli est {0}, et la lettre du lecteur est {1}", chemin, lettre)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
4 févr. 2007 à 23:36
Merci pour ta reponse, mais VB me dit :"Erreur    1    Le nom 'Directory' n'est pas déclaré."
Que dois-je faire ???
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
4 févr. 2007 à 23:41
Excuse moi j'avait pas vu tout ton message (PS : il faut déclarer avant Imports System.IO)
Je le declare comme quoi ???
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
5 févr. 2007 à 07:32
Merci bien ça marche !
0
Rejoignez-nous