2016-09-07 8 views
1

Ich arbeite an einem Wix-Projekt, das Benutzer fragen muss, ob sie die Datenbank beim Deinstallieren löschen möchten. Ich habe den Dialog und die Steuerung in der Benutzeroberfläche für das Wix-Projekt hinzugefügt. Wenn ich auf das MSI klicke, erscheint der angepasste Dialog für die Deinstallation, aber nicht, wenn ich ihn durch Deinstallieren aus Programmen und Funktionen anklicke.So passen Sie den Deinstallationsdialog in Programme und Funktionen an

Was muss ich tun, um denselben benutzerdefinierten Deinstallationsdialog über die Deinstallation von Programmen und Funktionen anzuzeigen?

Antwort

1

Die Schaltfläche Deinstallieren zeigt die MSI-Benutzeroberfläche nicht an. Daher besteht Ihre einzige Option zur Steuerung der Deinstallationsoberfläche darin, die Schaltfläche Deinstallieren zu unterdrücken, indem Sie ARPNOREMOVE setzen und den Benutzer auffordern, die Wartung zu starten.

+0

Ja, auf diese Weise wird die Wartungsseite zur Anzeige gezwungen. Es deaktiviert jedoch auch die Schaltfläche Entfernen. Daher müssen wir den Wartungsdialog neu definieren. Siehe [Link hier] (http://devdare.blogspot.com/2012/10/how-to-force-gui-uninstall-using.html). –

+0

Ja, Sie kämpfen hier gegen MSI. Beachten Sie, dass Sie verhindern möchten, dass ein sachkundiger Benutzer auf diese Weise deinstalliert (nur Fortschritt), Sie müssen es erkennen und blockieren. Aber das verhindert stille Deinstallationen, also empfehle ich es nicht. –

+0

ARP macht keine Annahme, dass es ein Windows Installer-Wartungsprogramm (msiexec) startet; Msiexec ist es egal, dass es über ARP gestartet wurde. Windows Installer erstellt den Schlüssel in der Hoffnung, dass es nützlich ist. Wenn Ihnen der standardmäßig erstellte Standard nicht gefällt, können Sie ihn ausblenden und Ihren eigenen vollständigen Schlüssel und Wertesatz hinzufügen. Das ist eine Menge Arbeit für einen anderen Deinstallations-String. –

1

Alternativ gibt es ein nettes Feature Sie durch eine benutzerdefinierte Aktion verwenden können, der die Sitzung erzählt eine Vielzahl von Dialogtypen anzuzeigen:

Record record = new Record(); 
record.FormatString = string.Format("Would you like to remove program-generated data?"); 

MessageResult value = session.Message(InstallMessage.User | (InstallMessage)MessageBoxButtons.YesNo, record); 

if (value == MessageResult.Yes) 
{ 
    // Remove program-generated data 
} 

finden Sie hier, wo ich mit dieser Lösung kam: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/UI-on-uninstall-td7593560.html#a7593572

sehen Sie hier für die Vielfalt der Dialoge können Sie bieten: https://msdn.microsoft.com/en-us/library/windows/desktop/aa371672(v=vs.85).aspx

diese benutzerdefinierte Aktion verwenden nur deinstallieren, planen Sie es wie so:

<CustomAction Id="ShowDialog" BinaryKey='CustomActionsBinary' DllEntry='ShowDialogRemoveFiles' 
       Execute='immediate' Return='check' Impersonate='no'/> 

<Binary Id='CustomActionsBinary' SourceFile='CustomActions.CA.dll'/> 

<InstallExecuteSequence> 
    <Custom Action='ShowDialog' Before='InstallFinalize'>REMOVE</Custom> 
</InstallExecuteSequence> 
Verwandte Themen