0

Je suis développeur InstallShield et j'ai récemment rencontré un scénario étrange sur la machine de mon client dans lequel l'application InstallShield de notre client passe à une mise à jour majeure. faire une nouvelle installation. Les détails sont comme suit:L'application InstallShield est mise à jour lors d'une nouvelle installation alors que la version précédente est absente de la machine

  1. J'ai essayé d'installer mon application qui a été développée par InstallShield. Il a détecté la version précédente sur la machine cible et est passé à un scénario de mise à niveau majeur mais la mise à niveau a échoué car il n'y a pas de version précédente sur ma machine.

  2. J'ai vérifié les journaux verbeux et la valeur de « IS_MAJOR_UPGRADE » est réglé sur « oui »

  3. J'ai vérifié ajouter/supprimer des programmes, mais pas d'entrée trouvé. J'ai également vérifié la ruche de désinstallation de l'éditeur de registre mais qui ne contenait aucune entrée de mon produit (aucune de sa version précédente)

  4. J'ai vérifié tous les binaires installés dans mon produit et les ai supprimés manuellement de la machine (le registre et les fichiers) mais ça continue quand même.

  5. J'ai vérifié l'emplacement "C: \ Windows \ Installer" pour tout msi lié à mon produit mais aucun n'a été trouvé.

  6. J'ai vérifié le msi mis en cache dans "C: \ Windows \ Downloaded Installations" et l'ai supprimé à partir de là aussi, mais aussi mon produit détecte la version précédente sur la machine.

Quelqu'un peut-il aider que ce qui peut être la raison possible pour son emplacement, la propriété MSI « IS_MAJOR_UPGRADE » = « Oui » comme je l'ai, je fouillé tous les endroits possibles sur mon la machine où tout ce qui concerne mon produit pourrait être trouvé mais encore il ramasse les détails de la version précédente de quelque part?

Répondre

0

Vyom,

Votre fichier journal doit identifier le uninstallcode qu'il identifie pour la mise à niveau. Le plus long et le plus court est qu'il existe un certain type de restes de registre pour ce produit. Si le fichier journal contient le guide de désinstallation, essayez de rechercher ce guide dans votre registre entier, en particulier si votre application prend en charge les installations par utilisateur.

+0

Merci pour la réponse Daniel. – Vyom

+0

Non, l'application ne prend pas en charge les installations par utilisateur. Il effectue des installations par machine. La chaîne de désinstallation de l'application n'était visible nulle part dans les registres.Le fichier journal contenait uniquement les instructions d'installation téléchargées. J'ai supprimé manuellement le dossier contenant msi en cache, mais il est allé sur le scénario de mise à niveau. – Vyom

0

Vous avez coché tous les lieux sauf celui qui compte. Un MSI peut avoir sa MSI en mémoire cache, cela n'a pas d'importance. Un MSI peut utiliser la propriété ARPSYSTEMCOMPONENT pour ne pas mettre une entrée dans ARP. Cela n'a pas d'importance. Vous pouvez supprimer le répertoire d'installation. Il .... (trouve je vais arrêter). MSI garde une trace de ses données d'état sous HKCR \ Installer \ Products en utilisant quelque chose appelé Descripteurs Darwin.

http://druss.co/2013/10/darwin-descriptor-guid-converter/

Démarrez votre installation et annuler à la boîte de dialogue de bienvenue. Jetez maintenant un coup d'oeil à votre journal détaillé et montrez ce que FindRelatedProducts rapporte. Il vous dira le nom du code produit qu'il trouve. Vous pouvez ensuite écrire un programme pour interroger MSI pour obtenir des informations sur ce produit ou calculer le descripteur darwin et aller le chercher dans le registre.

+0

Merci Christopher, c'est quelque chose que je ne connaissais pas. Laisse moi essayer ça aussi. – Vyom