7
votes

Comment interactif un MSI en silence? (Progression des données et annuler)

Pour une raison quelconque, nous fournissons un produit avec notre propre interface graphique, cela signifie que nous allons exécuter l'installation MSI silencieusement.

En utilisant l'API MSI "MSIInstallProduct", je peux installer le produit en silence, mais je ne sais pas comment puis-je obtenir les données de progression de cette installation et comment puis-je l'annuler.

Quelqu'un a des idées?


0 commentaires

3 Réponses :


7
votes

Mise à jour de juin 2018 : Bien que l'outil indiqué ci-dessous ne soit plus disponible au téléchargement, je l'ai trouvé via Wayback Machine. Je suppose que c'est ok et légal de le lier, voyant que l'outil était gratuit. Liens mis à jour ci-dessous.

Mise à jour : Cet outil de Wise n'est pas malheureusement téléchargeable . Je ne suis pas sûr de bien vouloir la distribuer non plus. Il semblait être un outil gratuit réparti dans le cadre de leur principale suite Studio Studio Studio, mais je ne pense pas que ce soit une source open. J'aimerais qu'ils le libèrent comme un outil open source.

Les produits d'emballage sage ont été abandonnés en raison d'un certain nombre de problèmes juridiques .


Je pense que vous pouvez obtenir la progression via l'API MSI, mais si j'étais vous, je voudrais juste montrer la barre de progression de la MSI elle-même après avoir invoqué l'installation via msiexec.exe .

MSI prend en charge plusieurs niveaux d'installation différents (complète, totalement silencieuse, interface graphique de base, interface graphique, etc.). Dans votre cas, on dirait que vous voulez une interface utilisateur de base. Cela donne une barre de progression dans laquelle vous pouvez masquer le bouton Annuler et montrer éventuellement une boîte de dialogue modale d'achèvement:

Installez silencieusement avec une barre de progression, pas de bouton d'annulation et pas de boîte de dialogue modale à la fin: xxx

Pour éviter de construire ces lignes de commande msiexec stupides manuellement, utilisez l'outil Command de ligne de commande MSI de sage: http://www2.wise.com/filelib/wiclb .exe ( ressuscité de la machine de Wayback ).

veuillez exécuter le téléchargement par Virustotal.com pour la sécurité.

 Entrez la description de l'image ici


lié ​​ :


3 commentaires

Je vais vous chercher un vote mais pas pour ma réponse. Nous n'utilisons pas l'interface graphique MSI car ce n'est pas adapté à la manière de notre produit, nous vous fournissons donc une barre de progression plus fraîche pour elle, tout ce dont j'ai besoin, c'est que les données de progression pour définir notre barre. L'interface graphique de base de MSI n'est pas acceptable. Et je ne peux toujours pas l'annuler de Pure API, non?


Voici un échantillon de fonctionnement avec des panneaux d'affichage MSI et de la barre de progression: sourceforge.net/projects/msiprogramming. Si ce n'est pas ce dont vous avez besoin, peut-être regarder les ressources de: InstallSite.org


N'oubliez pas de cliquer sur le bouton "Afficher tous les fichiers" (sinon, vous n'obtenez qu'une démonstration).



4
votes

Vous devez spécifier un gestionnaire d'interface utilisateur externe à l'aide de MSEsetexternalUI ou de MSETEXternaluirecord avant MSIInstallAlProduct (ce dernier est plus agréable, mais dispose d'une version supérieure de version MSI). La fonction que vous spécifiez sera appelée à chaque message Windows Installer souhaite que vous traitez. Cela vous donnera les données et une chance de répondre à cela d'annuler. Si vous avez besoin de MSI 4.5 ou de la version ultérieure, vous pouvez utiliser une DLL de gestionnaire d'interface utilisateur externe intégré, qui ne nécessite pas de bootstrap.


0 commentaires

5
votes

Voici un exemple de projet qui semble faire ce que vous parlez de: http://www.codeproject.com/kb/cs/msiterop.aspx


0 commentaires