Condition de lancement d'une installation VB

zlink17 Messages postés 2 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 octobre 2008 - 8 oct. 2008 à 10:15
zlink17 Messages postés 2 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 octobre 2008 - 10 oct. 2008 à 13:11
Bonjour à tous,

J'ai développé un programme sous visual basic et viens de créer une installation afin de le diffuser chez des collègues. Ce programme est un composant office.

J'ai pu voir que je pouvais difficilement personnaliser mon installation. J'aimerais que l'installation se lance sous une certaine condition; qu'il n'y est pas de programme office d'ouvert (Outlook, Word, Excel)

J'ai vu que l'on pouvais réaliser des conditions de lancement mais je n'arrive pas à utiliser cette fonction...D'après ce que j'ai compris, on peu seulement réaliser des conditions en fonctions de clé de registre, de présence de tel ou tel fichier ce qui n'arrange pas mon problème.

J'ai essayer de trouver une clé de registre permettant d'identifier mon programme lorsqu'il est ouvert ou fermé mais je n'ai rien trouvé...

Avez vous une solution à me proposer? Dois je passer par un autre type d'installation?

Merci pour votre aide qui me serais précieuse.

1 réponse

zlink17 Messages postés 2 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 octobre 2008
10 oct. 2008 à 13:11
J'ai trouvé une solution plus ou moins propre à mon problème. Je n'ai pas réussi à passé par les fonctionnalité propre à visual studio. (En gros j'ai fait un peu de bricolage...)

J'ai donc mon fichier Setup.msi qui installe mon programme. Afin de réaliser une condition de lancement (détection d'un programme office ouvert) j'ai créer un second programme .exe qui va réaliser cette condition.

Explication :
- J'ai renommé à la main mon fichier "Setup.msi" en "Setup" afin que les utilisateur n'est pas l'idée de lancer ce programme d'installation.
- J'ai ensuite créé un programme exécutable dans le même fichier que le "Setup" qui fera les fonctions suivantes :
<li>Vérification que les processus offices sont présent. Si oui je demande de les arrêter et je stop le programme.</li><li>Sinon je continue et renomme mon "Setup" en "Setup.msi" puis je le lance.</li><li>L'installation se réalise</li><li>Lorsque l'installation est terminée je renomme mon "Setup.msi" en "Setup"</li>Voila, le tour est joué!

Alors c'est une solution paliative mais elle à le mérite de fonctionner.

J'espère que cela pourra aider quelqu'un.

Par contre j'ai tout de même un problème...ce fichier ".exe" ne peu pas être lancer directement depuis le réseau...ce qui est quand même frustrant.
Avez vous une idée de solution?

Voici quand même le programme (à mettre dans un module) :

Dim MyProcess As New Process
    Dim i As Integer = 0
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim MyProcessesExcel() As Process
        Dim MyProcessesWord() As Process
        Dim MyProcessesOutlook() As Process
        Dim i_Result As Integer = MsgBoxResult.Cancel
        'Dim MyTime As Date

        Do
            MyProcessesExcel = Process.GetProcessesByName("EXCEL")
            MyProcessesWord = Process.GetProcessesByName("WINWORD")
            MyProcessesOutlook = Process.GetProcessesByName("OUTLOOK")

            If MyProcessesExcel.Length <> 0 Or MyProcessesOutlook.Length <> 0 Or MyProcessesWord.Length <> 0 Then
                i_Result = MsgBox("Setup needs the following applications to be closed :      " & Chr(10) & _
                        Chr(10) & "     - WINWORD" & _
                        Chr(10) & "     - EXCEL" & _
                        Chr(10) & "     - OUTLOOK" & Chr(10) & _
                        Chr(10) & "Please make sure to quit them before continuing", vbExclamation + vbRetryCancel)
            Else
                i_Result = MsgBoxResult.Cancel
                If My.Computer.FileSystem.FileExists(My.Computer.FileSystem.CurrentDirectory & "\Properties_Editor") Then
                    My.Computer.FileSystem.RenameFile(My.Computer.FileSystem.CurrentDirectory & "\Properties_Editor", "Properties_Editor.msi")
                    MyProcess.StartInfo.FileName = My.Computer.FileSystem.CurrentDirectory & "\Properties_Editor.msi"
                    MyProcess.Start()
                    While MyProcess.HasExited = False
                        System.Windows.Forms.Application.DoEvents()
                        Threading.Thread.Sleep(500)
                    End While
                    My.Computer.FileSystem.RenameFile(My.Computer.FileSystem.CurrentDirectory & "\Properties_Editor.msi", "Properties_Editor")
                Else : MsgBox("Error : The Properties_Editor file is not in the same folder 'Setup Delphi Properties Editor.exe'.")
                End If
            End If

        Loop While i_Result = MsgBoxResult.Retry

    End Sub
0
Rejoignez-nous