Supprimer l'écran d'option de réparation de l'installateur MSI
-
03-07-2019 - |
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é.
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.
- Ouvrez le fichier msi avec Orca.exe.
- Allez dans la table 'Propriété'.
- Ajoutez la clé 'ARPNOMODIFY' avec la valeur
1
. - Ajoutez la clé 'ARPNOREPAIR' avec la valeur
1
. - Modifiez la valeur de la propriété "MaintenanceForm_Action" de
Réparer
enSupprimer
. - Allez dans la table 'Control'.
- Recherchez l'entrée avec Dialog_ 'MaintenanceForm' et Control 'BodyText'.
- Changez la propriété 'Text' en ceci:
{\ VSI_MS_Sans_Serif13.0_0_0} Sélectionnez " Finish " supprimer [ProductName]
- Recherchez l'entrée avec Dialog_ 'MaintenanceForm' et Control 'RepairRadioGroup'.
- Modifiez la propriété 'Control_Next' de
CancelButton
enFinishButton
. - 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
-
Bouton de désactivation du changement
-
Bouton de désactivation de la réparation
Pour traiter le deuxième problème, vous pouvez simplement modifier l’écran de la boîte de dialogue MaintenanceWelcome
intégré de installshield.
- 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;
- Dans le comportement au clic du bouton
Next
, il suffit d'ajouter l'événementEndDialog
. Définissez sa condition d'exécution sur1
pour qu'il soit toujours exécuté. Définissez savaleur
sursortie
- Modifiez le texte du bouton-poussoir
Suivant
en "Terminer". - 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.