Frage

Ich habe ein Standard -MSI -Installationsprogramm für P & D meiner Anwendung erstellt, das folgende Komponenten verwendet:

  • Ein WCF -Dienst, der als Windows -Dienst gehostet wird.
  • Eine GUI -Anwendung, die mit diesem Dienst kommuniziert.
  • Eine Shell -Erweiterung DLL.

Installateur arbeitet sehr gut und ohne Probleme. Das Problem tritt auf, wenn der Benutzer versucht, die Anwendung erneut über die vorhandene Anwendung mit MSI Installer zu installieren. Derzeit erfolgt der Bildschirm mit 2 Optionen "Reparatur" und "entfernen". Beide Optionen funktionieren nicht und korrumpiert die intallierte Anwendung.

Ich möchte diesen Bildschirm überspringen und so etwas wie eine MessageBox zeigen, in der die Anwendung bereits installiert ist. Da es für mich nicht obligatorisch ist, dem Benutzer Reparaturoption zu bieten. Und mindestens sollte ich in der Lage sein, mich zu verbergen oder keine Reparaturoption bereitzustellen.

Irgendwelche Hilfe oder Vorschläge für mich? Also habe ich so viele Dinge ausprobiert, wie die Verwendung von Orca, das NotRepair -Eigentum usw. addiert usw., aber keiner von ihnen hat funktioniert.

War es hilfreich?

Lösung

Schauen Sie sich das an die Windows Installer Guide bei msdn für diese beiden Eigenschaften:

Andere Tipps

Die angenommene Antwort lässt ein paar Dinge für jemanden ohne viel Install -Erfahrung heraus.

Dazu müssen Sie den .msi bearbeiten, nachdem er vom .NET -Installations -Build erstellt wurde. Der einfache Microsoft unterstützte Weg dazu ist Orca. Sie können Orca aus dem installieren .NET Framework SDK. Wenn Sie der Meinung sind, dass Sie bereits das SDK haben, aber nicht in Ihrem Startmenü Orca haben, suchen Sie Ihren Computer nach "orca.exe" oder "orca.msi".

Sobald Orca installiert ist, führen Sie es einfach aus. Öffnen Sie Ihre MSI -Datei mit der Orca -Benutzeroberfläche. Links sehen Sie eine Liste von "Tabellen". Wählen Sie die Tabelle Eigentum. Klicken Sie im rechten Bereich mit der rechten Maustaste und fügen Sie hinzu. Fügen Sie einen Knoten mit dem Namen hinzu ARPNOREPAIR. Stellen Sie sicher, dass Sie den Wert auf die leere Zeichenfolge setzen "". Fügen Sie auch einen Knoten für hinzu für ARPNOMODIFY Wenn Sie nicht möchten, dass die Option "Änderungsoption" für Ihr Programm in Windows angezeigt wird.

Erkenne, dass dieses Problem inzwischen einige Jahre hat, aber ich nehme an, Leute wie ich gehen immer noch in dieses Problem ein. SUMEET erwähnt in einem Kommentar an die akzeptierte Lösung, dass der Benutzer mit beiden Optionen, "Reparatur" und "Entfernen", gezeigt, immer noch auf den Bildschirm gelangen kann.

Die drei verschiedenen Möglichkeiten, wie ein Benutzer möglicherweise auf das Installationsprogramm für eine Anwendung zugreifen kann.

Eins: Wie bereits beantwortet, kann Arpnomodify und Arpnorepair das Problem nur in Add -Entfernungsprogramm beheben, kann mit "orca.exe" durchgeführt werden.

Zwei: Durch die rechte Klicken Sie mit dem Installateur für den MSI. Leider ist dies der einzige Ort, an dem es keine Möglichkeit gibt, beide Optionen zu vermeiden, ohne die Anpassungen computert zu machen, für alle MSI-Dateien.

Drei: Durch Doppelklicken auf das Installationsprogramm, falls bereits installiert, gibt es einen Bildschirm mit den Optionsfeldern "Reparatur" und "entfernen".

Fand diese nette Adaption unten, um den dritten Zugangspunkt zu lösen, der etwas neu geschrieben hat, hier: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-help-49010162.html. Es entfernt grafisch die Auswahl der Reparaturoption. Mein Dank geht an Paul Brun für diesen.

  1. Öffnen Sie das MSI-File mit orca.exe.
  2. Gehen Sie in den Tisch 'Eigenschaft'.
  3. Fügen Sie den Schlüssel "Arpnomodify" mit Wert hinzu 1.
  4. Fügen Sie den Schlüssel "Arpnorepair" mit Wert hinzu 1.
  5. Ändern Sie den Wert der Eigenschaft 'MaintenanceForm_Action' von Repair zu Remove.
  6. Gehen Sie in Tabelle 'Kontrolle'.
  7. Suchen Sie den Eintrag mit Dialog_ 'MaintenanceForm' und steuern Sie "BodyText".
  8. Ändern Sie die Eigenschaft "Text" dazu:{\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Suchen Sie den Eintrag mit Dialog_ 'MaintenanceForm' und steuern Sie 'ReparaturRadioGroup'.
  10. Ändern Sie die Eigenschaft "control_next" von CancelButton zu FinishButton.
  11. Finden und entfernen Sie den Eintrag mit Dialog_ 'MaintenanceForm' und steuern Sie 'ReparaturRadioGroup'.

Im Zusammenhang mit den obigen Schritten kann es sein, den Prozess der Anpassung des MSI mit einer Transformation zu automatisieren, die nur einmal die Schritte ausführt. Weitere Informationen dazu finden Sie hier: Verwenden Sie Orca, um MSI aus der Befehlszeile zu bearbeiten?

Ich stimme Henrik zu, aber in meinem Fall letzter Schritt

Finden und entfernen Sie den Eintrag mit Dialog_ 'MaintenanceForm' und steuern Sie 'ReparaturRadioGroup'.

Ursache 2814 Fehler.
Mein Vorschlag ist also: Machen Sie die Reparaturprodukte unsichtbar. Um es einfach zu tun, setzen Sie es, s Attribut bis 0

Aktualisieren der Steuerungssetattribute = 0 wobei Control = 'ReparaturRadioGroup' '

Dies ist bis heute viel einfacher, wenn Sie über InstallShield gehen, um Ihre ISM -Datei zu bearbeiten. Um die zu deaktivieren Change und Repair Die Schaltfläche von Add/Reme -Programmbildschirm setzen Sie die folgenden Einstellungen auf Yes an Installation Designer Tab> Installation Information Knoten im Navigationsbereich> General Information Knoten im Navigationsbereich> Add or Remove Programs Abschnitt im Detailbereich

  1. Disable Change Button
  2. Disable Repair Button

enter image description here

Um das zweite Problem zu lösen, können Sie einfach den Eingebauung ändern MaintenanceWelcome Dialogbildschirm von InstallShield.

  1. Ändern Sie den Text der Begrüßungsnachrichtsbezeichnung in eine Fehlermeldung z. B. "Eine andere Version dieses Produkts ist bereits installiert. Die Installation kann nicht fortgesetzt werden."
  2. Im Verhalten auf dem Klick von Next Taste einfach hinzufügen EndDialog Veranstaltung. Setzen Sie seine Ausführungsbedingung auf 1 so dass es immer ausgeführt wird. Setze seine Value zu Exit
  3. Ändern Sie den Text der Next Drücken Sie Taste, um zu "fertig".
  4. Deaktivieren oder verstecken Cancel Drücken Sie die Taste, wenn Sie möchten.

Sie sind alle eingestellt!

Ich habe setup.exe und msi in eine exe -Datei eingeschlossen. Was beim Klicken auf die Dateien und Trigger setup.exe extrahiert. In diesem EXE habe ich einen Code hinzugefügt, um zu überprüfen, ob die Anwendung bereits im Computer installiert ist oder nicht. Falls es installiert ist, fordere ich den Benutzer auf und beendet. Auf diese Weise wird MSI nie gestartet, wenn die Anwendung bereits installiert ist, und so wird der Bildschirm nicht mehr repariert und entfernen. In Bezug auf die Schaltfläche "Schaltfläche" von Add/Entfernen des Bildschirms wechseln Sie die von "Chegueverra" bereitgestellte Lösung. Danke dir.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top