2012-04-12 9 views
4

Das Wix-Setup, an dem ich arbeite, fragt den Benutzer, ob er eine Verknüpfung vom Hauptprogramm auf dem Desktop installieren soll.Muster, um ein Wix-Upgrade durchzuführen, ohne die Desktop-Icons der Benutzer zu stören

Das Problem ist, dass während des Upgrades, die Verknüpfung entfernt und dann neu erstellt:

  • Wenn der Benutzer auf das Symbol bewegt, ist es wahrscheinlich woanders neu ist (neben Freiraum von oben links beginnend)
  • Wenn der Benutzer das Symbol während der Erstinstallation nicht erstellt hat, erinnern Upgrades mit der Benutzeroberfläche nicht daran, dass das Kontrollkästchen zum Erstellen des Symbols standardmäßig deaktiviert ist. Bei stillen Upgrades wird das Symbol nur erstellt, obwohl der Benutzer dies explizit gewählt hat nicht dieses Symbol erstellt haben.

Gibt es einen einfachen Weg, um diese Situation richtig zu behandeln?

Im Folgenden sind Informationen auf meinem wix Setup:

Install ist pro Maschine

Der Anwender die Desktop-Verknüpfung über eine Checkbox installieren wählt, die auf einer modifizierten Version des „Ziels auswählen“ hinzugefügt wird:

<Control Id="DesktopShortcutCheckBox" Type="CheckBox" X="20" Y="160" Width="290" Height="17" Property="INSTALLDESKTOPSHORTCUT" CheckBoxValue="[INSTALLDESKTOPSHORTCUT]" Text="!(loc.InstallDirDlgCreateDesktopShortcut)" /> 

im UI-Tag habe ich die Eigenschaft initialisiert:

<Property Id="INSTALLDESKTOPSHORTCUT" Value="1"/> 

Dies ist die Komponente ist die Verknüpfung mit der INSTALLDESKTOPSHORTCUT Bedingung zu erstellen:

<Directory Id="DesktopFolder" Name="Desktop"> 
    <Component Id="desktopconnecteurdts" Guid="a-real-guid-here"> 
     <Condition>INSTALLDESKTOPSHORTCUT=1</Condition> 
     <Shortcut Id="desktopconnecteurdts" Name="DTS eXplorer" WorkingDirectory="ApplicationFolder" Icon="DTSeXplorer.exe" Target="[ApplicationFolder]\DTSeXplorer.exe" Advertise="no" /> 
    </Component> 
</Directory> 

Nach dem Start der Setup prüft, ob eine ältere Version vorhanden ist, und entfernen Sie die ältere Version, wenn gefunden:

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion OnlyDetect="no" 
        Property="PREVIOUSVERSIONSINSTALLED" 
        Minimum="$(var.OldProductVersion)" 
        IncludeMinimum="yes" 
        Maximum="$(var.ProductVersion)" 
        IncludeMaximum="no" 
        RemoveFeatures="all" /> 
    <UpgradeVersion OnlyDetect="yes" Property="PROJECT_DOWNGRADE" 
        Minimum="$(var.ProductVersion)" IncludeMinimum="no" /> 
</Upgrade> 

Die Produktversion Haupt ändert sich nicht, zum Beispiel ich ein Upgrade von 1.6.8.12345 zu 1.7.2.56789

Vielen Dank!

+0

Haben Sie eine Lösung für die Verknüpfung auf dem Desktop gefunden? – Andreas

+0

@Andreas: Für den Standort: nein, es ist bei jedem Update zurückgesetzt –

Antwort

1

Schreiben Sie während der Installation den Wert von INSTALLDESKTOPSHORTCUT in die Registrierung. Wenn das Installationsprogramm gestartet wird, können Sie die Registrierung lesen. Wenn dieser Schlüssel vorhanden ist, legen Sie ihn als Standardwert für diese Eigenschaft fest.

Nicht sicher, ob Sie etwas über den Speicherort der Verknüpfung auf dem Desktop jedoch tun können.

+0

Das ist, was ich dachte, ich war auf der Suche nach etwas einfacher, obwohl (vielleicht gebaut) ... –

+0

Konnte nichts tun über den Shortcut-Speicherort, aber ging die Registrierung Route, um sich an den Checkbox-Status zu erinnern. Ich empfehle die folgende Lektüre, die eine Lösung bietet, die alle Fälle abdeckt: http://robmensching.com/blog/posts/2010/5/2/The-WiX-toolsets-Remember-Property-pattern –

0

Sie können die Einstellung für die Verknüpfung speichern und wiederherstellen, indem Sie nur wix verwenden.

Ihre Immobilie muss so aussehen.

<Property Id="INSTALLDESKTOPSHORTCUT" Value="1" Secure="yes"> 
    <RegistrySearch Id="Reg64" Root="HKLM" Win64="yes" Key="Software\$(var.ProductCompany)" Name="CreateDesktopShortcut" Type="raw"></RegistrySearch> 
    <RegistrySearch Id="Reg32" Root="HKLM" Win64="no" Key="Software\$(var.ProductCompany)" Name="CreateDesktopShortcut" Type="raw"></RegistrySearch> 
</Property> 

Die beiden ‚RegistrySearch die gibt es nur sowohl 32-Bit- und 64-Bit-Installationsprogramm zu decken, wenn Sie nur 32-Bit verwenden Sie einen von ihnen entfernen können.

Und unter Ihrem Stammordner fügen Sie dies hinzu.

<Component Permanent="yes" Id="RegistryEntries" Guid="YOUR_GUID"> 
    <RegistryKey Root="HKLM" Key="Software\$(var.ProductCompany)" Action="create"> 
    <RegistryValue Type="integer" Name="CreateDesktopShortcut" Value="[INSTALLDESKTOPSHORTCUT]" /> 
    </RegistryKey> 
</Component> 
Verwandte Themen