Problème de compilation et installeur

paulo - 12 juin 2022 à 01:13
 vb95 - 16 juin 2022 à 12:43
Bonjour,

Je rencontre un problème d'installation de mes logiciels perso. Je travaille à la modernisation en passant les webbrowser en webview2.

J'ai un fichier INOSETUP qui me permet de créer l'installeur. A chaque modification je change le numéro de la version du logiciel, je compile et j'installe sans problème. Depuis que je suis passé au Webview2 le logiciel s'installe mais lorsque je double clique pour l'ouvrir rien ne se passe.

Je rencontre ce problème sur 2 logiciels différents, il s'agit donc bien d'une erreur que je commets. Me faut-il ajouter des fichiers dans l'installeur ?

Merci pour votre aide !

39 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 09:31
Bonjour

Quand il ne se passe rien, souvent c'est que le framework nécessaire au logiciel n'est pas installé sur le PC cible.
As tu vérifié ça ?
0
Merci pour le retour,

Pour passer en Webview2 j'ai effectivement passé mon application en Framework 4.6.2 puis 4.8 (4.5 avant).

Sur le PC j'ai la 4.8.03761

Si c'était un problème de Framework, l'application poserait également problème au lancement dans VB non ?

Autre piste, lorsque je lance le fichier exe présent dans le dossier 'release' de mon projet le logiciel se lance.

Je désespère Merci :-)
0
Pour creuser la piste du Framework je viens de passer ma sauvegarde avant modification en 4.8. L'installeur fonctionne normalement.

Je joins le code de mon installeur au cas ou :

[Setup]
AppName=NomAppli
AppVersion=7.00.1
DefaultDirName={pf}\NomAppli
DefaultGroupName=NomAppli
OutputBaseFilename=NomAppli_Setup

[Files]
Source: "C:\Users\PC\Desktop\Nom\bin\Release\NomAppli.exe"; DestDir: "{app}"; Languages: French
Source: "C:\Users\PC\Desktop\Nom\bin\Release\NomAppli.exe.config"; DestDir: "{app}"
Source: "C:\Users\PC\Desktop\Nom\bin\Release\dotNetFx40_Full_setup.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall


[Icons]
Name: "{userdesktop}\NomAppli"; Filename: "{app}\NomAppli.exe"; WorkingDir: "{app}"
Name: "{group}\NomAppli"; Filename: "{app}\NomAppli.exe"; WorkingDir: "{app}"
Name: "{group}\Désintaller NomAppli"; Filename: "{uninstallexe}"; WorkingDir: "{app}"

[Run]
Filename: "{tmp}\dotNetFx40_Full_setup.exe"; WorkingDir: "{tmp}"; Flags: waituntilterminated

[Languages]
Name: "French"; MessagesFile: "compiler:Languages\French.isl"


Ce code fonctionne dans ma version SANS Webview2

Merci à vous !
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 10:44
Si c'était un problème de Framework, l'application poserait également problème au lancement dans VB non ?


Tu testes l'installation sur le PC où tu codes?
Si oui, ce n'est forcément pas un problème de framework, par contre tu pourrais passer à coté de pleins d'autres problèmes.....
0

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

Posez votre question
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 10:48
Dans ton projet, il y a un fichier Program.vb, mets y ce code
Imports System.IO

Module Program
    Sub Main()
        ' hook on error before app really starts
        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf CurrentDomain_UnhandledException

        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        Application.Run(New Form1())
    End Sub

    Sub CurrentDomain_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
        ' put your tracing or logging code here (I put a message box as an example)
        Dim filename As String = Application.StartupPath & "\log.txt"
        File.WriteAllText(filename, e.ExceptionObject.ToString())
        Process.Start(filename)
    End Sub
End Module


Ça devrait permettre de logguer (et afficher) la pile d'erreurs au démarrage de ton appli installée.
0
J'apporte petit à petit toutes mes "trouvailles" qui peuvent vous permettre de détecter mon erreur.

Je viens de travailler sur un logiciel beaucoup plus léger afin de mieux tenter de cerner le problème. Dans les références du projet j'ai enlevé la 'copie locale' des 3 références Webview2. Après génération le fichier .exe du release ne fonctionne plus.

J'ai tenté d'ajouter les 3 .dll dans inosetup pur la compilation. Une fois installé je retrouve bien les 3 .dll dans le dossier 'programme files' mais l'application ne se lance toujours pas.
0
Tu testes l'installation sur le PC où tu codes?
Si oui, ce n'est forcément pas un problème de framework, par contre tu pourrais passer à coté de pleins d'autres problèmes.....


J'ai testé sur 3 PC dont celui de développement.
2 en W10
1 en W7

Je vais tester le code proposé, et je reviens avec le résultat. merci.
0
Dans mon projet je n'ai pas de fichier Program.vb.

J'ai :
  • crée et importé le fichier dans visual studio
  • Régénéré le programme
  • Compiler à l'aide de InoSetup
  • Installé
  • Lancé


Je n'ai pas de résultats mais je ne suis pas sur que cela soit ce qu'il faut faire ?

Merci pour ta patience :-)
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 11:19
Pas de fichier programm.vb?

Ton projet est bien un projet winform ?
0
Dans Visual Studio il s'agit d'un format "Application Windows Forms" donc oui.

J'ai :
Form1.vb
Application.Designer.vb
AssemblyInfo.vb
Settings.Designer.vb

Mais pas de 'nom_du_programme.vb'
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
Modifié le 12 juin 2022 à 11:30
Non pas "non du programme.vb"
Mais exactement Program.vb

0
Oups, désolé.

Je viens de regarder, je n'ai pas ce fichier, ni dans aucun de mes programmes "maisons". Est-ce anormal ?

En parallèle je continue à "explorer" et je constate une chose :

Dans le dossier 'bin/release', lorsque je génére dans visual studio, j'au un dossier 'runtimes' qui apparait et qui est absent dans mon dossier logiciel 'programme files'. Dans ce dossier 'runtimes' il y a 3 sous dossiers ('win-arm64' # 'win-x64' # 'win-x86'). Chacun de ces dossiers j'ai un dossier 'native' qui contient ''WebView2Loader.dll'.

Lorsque je supprime le dossier 'runtimes' et que je lance le logiciel depuis 'bin/release/monprogramme.exe' j'obtiens un résultat similaire au lancement du logiciel installé. A savoir que le processus apparait dans le gestionnaire des taches mais rien n'apparait. Piste intéressante non ?

Merci
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 12:02
Après vérification non ce n'est pas anormal. VS ne le crée plus par défaut.
Du coup, il faut l'écrire toi même.
0
Lorsque j'ajoute le fichier 'program.vb' je rencontre une erreur étonnante, il se retrouve dans 2 dossiers et donc en conflit !


C:\Users\PC\Desktop\Logiciel Dev\Analysis\Analysis\Program.vb
C:\Users\PC\Desktop\Logiciel Dev\Analysis\Analysis\My Project\Program.vb


Quand j'en supprime un la génération ne fonctionne plus. Je cherche.
0
J'ai réussi a créer le fichier Program.vb.
J'ai généré puis créer un exe
J'ai installé
J'ai lancé

Ou devrait se trouver le fichier de log ?
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 12:54
Normalement il aurait dû s'afficher.
Sinon il devrait se trouver dans le dossier de l'exécutable
0
Je ne le vois nul part.

Je fais pas mal de test et il semble que tout pointe vers le dossier 'runtimes' qui contient 'WebView2Loader.dll'. Ce dossier est crée dans BIN/RELEASE à la génération mais je n'arrive pas à savoir par quoi. Ce qui est sur c'est que dès qu'il n'y est pas, le logiciel ne fonctionne plus.
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 13:14
Je ne connais pas WebWiew2, donc je n'ai aucun avis de ce coté là.

Je t'ai proposé une solution qui permet normalement de récupérer les messages d'erreur, même avant que le programme ne commence réellement.
Par exemple, j'ai ajouté ce code (qui plante forcément) dans le constructeur de mon formulaire de test

    Public Sub New()

        ' Cet appel est requis par le concepteur.
        InitializeComponent()

        Dim zero As Integer = 0
        Dim un As Integer = 1
        Dim erreur As Integer = un \ zero


Quand je lance (sous visual studio ou directement l'exe) ce fichier log s'affiche
System.DivideByZeroException: Tentative de division par zéro.
   à Test_VB.Net_winform.Form1..ctor() dans Y:\Visual Studio 2013\Projects\Test VB.Net winform\Test VB.Net winform\Form1.vb:ligne 93
   à Test_VB.Net_winform.Program.Main() dans Y:\Visual Studio 2013\Projects\Test VB.Net winform\Test VB.Net winform\Program.vb:ligne 10

On voit clairement qu'il y a un problème de division par zéro à la ligne 93 de Form1.vb

J'espérais cibler ton problème de cette manière, mais manifestement ça ne fonctionne pas chez toi, je ne sais pas quoi te proposer de plus.

Effectivement la piste du dossier runtimes est à creuser.
Essaye de l'ajouter manuellement dans le PC de test et si ton programme fonctionne alors il faut modifier InnoSetup pour qu'il copie ce dossier.
0
Voila ce que j'ai fait au cas ou il s'agisse d'une erreur avec ton code :

Dans VS -> Explorateur de solutions -> clic droit -> Ajouter -> Nouvel element -> Classe -> coller le code donné -> Renommer en 'Program.vb' -> Generer -> Creer exe -> Installer -> Lancer
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
12 juin 2022 à 13:45
Dans les propriétés du projet, onglet "Application", l'objet de démarrage doit être "Sub Main"
(c'est pas aussi compliqué en C#....)
0
Rejoignez-nous