Question

J'ai créé un programme d'installation MSI standard pour P & amp; D de mon application, qui utilise les composants suivants:

  • Un service WCF hébergé en tant que service Windows.
  • Une application graphique qui communique avec ce service.
  • Une extension shell Dll.

Le programme d’installation fonctionne très bien et sans problème. Le problème se produit lorsque l'utilisateur tente d'installer à nouveau l'application sur l'application existante à l'aide du programme d'installation de MSI. Actuellement, il propose un écran avec 2 options " Réparation " & amp; "Supprimer". Ces deux options ne fonctionnent pas et corrompt l'application installée.

Ce que je veux, c'est ignorer cet écran et afficher quelque chose comme une MessageBox disant que l'application est déjà installée. Comme il n'est pas obligatoire pour moi de fournir l'option de réparation à l'utilisateur. Et au minimum, je devrais être capable de cacher ou de ne pas fournir d’option de réparation.

Une aide ou des suggestions pour moi? Donc, jusqu’à présent, j’ai essayé de nombreuses choses, comme utiliser ORCA, ajouter la propriété NotRepair, etc. Mais aucune d’entre elles n’a fonctionné.

Était-ce utile?

La solution

Consultez le Guide d'installation de Windows sur MSDN pour ces deux propriétés:

Autres conseils

La réponse acceptée laisse quelques petites choses pour quelqu'un qui n'a pas beaucoup d'expérience d'installation.

Pour ce faire, vous devez éditer le fichier .MSI après sa création par la version d'installation de .NET. Le moyen le plus simple pour cela consiste à Orca . Vous pouvez installer Orca à partir du SDK .NET Framework . . Si vous pensez que vous avez déjà le SDK, mais que vous n’avez pas d’Orca dans votre menu Démarrer, recherchez sur votre ordinateur "Orca.exe". ou "Orca.msi".

Une fois Orca installé, lancez-le. Ouvrez votre fichier MSI à l’aide de l’interface utilisateur Orca. Sur la gauche, vous verrez une liste de "Tables". Choisissez la table Propriété . Dans le volet de droite, cliquez avec le bouton droit et ajoutez. Ajoutez un noeud nommé ARPNOREPAIR . Assurez-vous de définir la valeur sur la chaîne vide " " . Ajoutez également un nœud pour ARPNOMODIFY si vous ne souhaitez pas que l'option de modification s'affiche dans les fenêtres de votre programme.

Réalisez que ce problème existe depuis quelques années maintenant, mais je suppose que des gens comme moi continuent à se heurter à ce problème. Sumeet mentionne dans un commentaire à la solution acceptée que l'utilisateur est toujours en mesure d'accéder à l'écran avec les deux options, "Réparer". et "Supprimer", affichés.

Il semble en fait qu'il existe trois manières pour un utilisateur d'accéder au programme d'installation d'une application.

Un: Comme déjà répondu, ARPNOMODIFY et ARPNOREPAIR corrigent le problème en ajoutant uniquement le programme, peuvent être effectuées avec "Orca.exe".

Deux: En cliquant avec le bouton droit de la souris sur le programme d'installation du MSI. Malheureusement, c’est le seul endroit où il semble qu’il n’existe aucun moyen d’éviter les deux options sans procéder à des réglages informatiques pour tous les fichiers msi.

Trois: En double-cliquant sur le programme d'installation, si celui-ci est déjà installé, vous obtiendrez un écran avec les boutons radio "Réparer". et "Supprimer".

Vous trouverez ci-dessous cette adaptation intéressante pour résoudre le troisième point d'accès, quelque peu réécrit, ici: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project -properties-help-49010162.html . Il supprime graphiquement le choix de permettre l'option de réparation. Merci à Paul Brun pour celui-ci.

  1. Ouvrez le fichier msi avec Orca.exe.
  2. Allez dans la table 'Propriété'.
  3. Ajoutez la clé 'ARPNOMODIFY' avec la valeur 1 .
  4. Ajoutez la clé 'ARPNOREPAIR' avec la valeur 1 .
  5. Modifiez la valeur de la propriété "MaintenanceForm_Action" de Réparer en Supprimer .
  6. Allez dans la table 'Control'.
  7. Recherchez l'entrée avec Dialog_ 'MaintenanceForm' et Control 'BodyText'.
  8. Changez la propriété 'Text' en ceci: {\ VSI_MS_Sans_Serif13.0_0_0} Sélectionnez " Finish " supprimer [ProductName]
  9. Recherchez l'entrée avec Dialog_ 'MaintenanceForm' et Control 'RepairRadioGroup'.
  10. Modifiez la propriété 'Control_Next' de CancelButton en FinishButton .
  11. Recherchez et supprimez l'entrée avec Dialog_ 'MaintenanceForm' et Control 'RepairRadioGroup'.

Les étapes ci-dessus permettent également d'automatiser le processus d'adaptation du fichier msi avec une transformation obtenue en effectuant les étapes une seule fois. Vous trouverez plus d'informations sur la procédure à suivre ici: Utilisez Orca pour modifier MSI en ligne de commande?

Je suis d'accord avec Henrik, mais dans mon cas, dernière étape

  

Recherchez et supprimez l'entrée avec Dialog_ 'MaintenanceForm' et Control 'RepairRadioGroup'.

cause une erreur 2814. Ma suggestion est donc: rendre RepairRadioGroup invisible. Pour le faire, définissez-le. Attribut à 0

  

UPDATE Control SET Attributes = 0 WHERE Control = 'RepairRadioGroup'

C’est beaucoup plus facile à partir d’aujourd’hui si vous passez par installshield pour éditer votre fichier ISM. Pour désactiver les boutons Modifier et Réparer de l'écran Ajout / Suppression de programmes, définissez les paramètres ci-dessous sur Oui sur Installation Designer . onglet > Noeud Informations d'installation dans le volet de navigation > Noeud Informations générales dans le volet de navigation > Ajout / Suppression de programmes dans le volet de détail

  1. Bouton de désactivation du changement
  2. Bouton de désactivation de la réparation

 entrer la description de l'image ici

Pour traiter le deuxième problème, vous pouvez simplement modifier l’écran de la boîte de dialogue MaintenanceWelcome intégré de installshield.

  1. Remplacez le texte du libellé du message de bienvenue par un message d'erreur, par exemple. " Une autre version de ce produit est déjà installée. L’installation ne peut pas continuer. & Quot;
  2. Dans le comportement au clic du bouton Next , il suffit d'ajouter l'événement EndDialog . Définissez sa condition d'exécution sur 1 pour qu'il soit toujours exécuté. Définissez sa valeur sur sortie
  3. Modifiez le texte du bouton-poussoir Suivant en "Terminer".
  4. Désactivez ou masquez le bouton-poussoir Annuler si vous le souhaitez.

Vous êtes tous ensemble!

J'ai enveloppé setup.exe et MSI dans un fichier EXE. Qui sur clic extrait les fichiers et déclenche Setup.exe. Dans cet exe, j'ai ajouté un code pour vérifier si l'application est déjà installée sur la machine ou non. Dans le cas où il est installé, j'invite l'utilisateur et le quitte. De cette façon, MSI n'est jamais démarré si l'application est déjà installée. Ainsi, l'écran Réparer et supprimer n'apparaît jamais. En ce qui concerne le bouton Modifier de l'écran Ajouter / Supprimer, j'ai utilisé la solution fournie par "CheGueVerra". Merci à vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top