zlink17
Messages postés2Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention10 octobre 2008
-
8 oct. 2008 à 10:15
zlink17
Messages postés2Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention10 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?
zlink17
Messages postés2Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention10 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