2016-11-21 2 views
0

Ich habe zwei Probleme hier, dass ich nicht meinen Kopf umWix Majorupgrade und halten dynamisch generierten Dateien auf Deinstallation

wickeln kann

Die erste: Ich habe dynamisch generierte Datenbankdateien, die ich bei der Deinstallation behalten möchten. Die zweite: Beim Upgrade werden keine Dateien ersetzt.

Was ich für ein neues Upgrade tun: Einfach die Release-Version von 1.0.1 bis 1.0.2.

Hier ist meine Wix-Datei:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> 
<Product Id="*" Name="St Mary Attendnace Mangement" Language="1033" Version="1.0.2" Manufacturer="Shady Atef" 
     UpgradeCode="UPGRADECODE"> 
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 
<PropertyRef Id="NETFRAMEWORK45" /> 
<Condition 
    Message='This setup requires Microsoft .NET Framework 4.5 package or greater needs to be installed for this installation to continue.'> 
    <![CDATA[Installed OR NETFRAMEWORK45]]> 
</Condition> 
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." 
       Schedule="afterInstallExecute" /> 
<MediaTemplate EmbedCab="yes" /> 


<Feature Id="ProductFeature" Title="St_Mary_Attendance_Setup" Level="1"> 
    <ComponentGroupRef Id="C_CommonAssemblies" /> 

    <ComponentRef Id="ApplicationShortcuts" /> 

</Feature> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="INSTALLFOLDER" Name="St Mary Attendnace Mangement" /> 
    </Directory> 
    <Directory Id="ProgramMenuFolder"> 
    <Directory Id="ProgramMenuSubfolder" Name="St Mary Attendnace Mangement"> 
     <Component Id="ApplicationShortcuts" Guid="ED28E3D6-5365-48E7-BD76-B3295099CF47"> 
     <Shortcut Id="ApplicationStartMenuShortcut" 
        Name="St Mary Attendance Mangement-Shortcut" 
        Description="Manage your attendance easily" 
        Target="[#fil54A6944D4CD4C2F739233096DDDBD757]" 
        WorkingDirectory="INSTALLFOLDER" /> 
     <RemoveFolder Id="ProgramMenuSubfolder" On="uninstall" /> 
     <RegistryValue Root="HKCU" Key="Software\ShadyAtef\StMaryChurchAttendance" Name="installed" Type="integer" 
         Value="1" 
         KeyPath="yes" /> 
     </Component> 
    </Directory> 
    </Directory> 
</Directory> 

</Product> 
</Wix> 

Hinweis: C_CommonAssemblies von Heat auf jedem Build erzeugt wird. PS: Ich weiß, dass diese Frage hier oft wiederholt wird und ich habe die meisten von ihnen gelesen, aber ich kann nicht herausfinden, was los ist.

Antwort

1

Wenn Dateien von der laufenden Anwendung generiert werden, werden sie bei der Deinstallation nicht automatisch entfernt, genauso wenig wie alle Ihre Word-Dokumente gelöscht werden, wenn Sie Office deinstallieren. Wenn Sie tatsächlich einen DB installiert haben (dann füllen Sie ihn aus), dann ist es ein Kandidat für das Entfernen zum Zeitpunkt der Deinstallation.

Ihr Haupt-Upgrade ist nach InstallExecute, gegen Ende des Upgrade-Prozesses. Dies bedeutet, dass das neue Produkt auf dem bestehenden Produkt installiert werden soll (und Dateien), und das bedeutet, dass die Datei überschreiben Regeln gelten, und modifizierte Dateien werden nicht überschrieben:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370531(v=vs.85).aspx

Die upgrade muss den gleichen UpgradeCode wie das vorherige Produkt haben - es ist nicht klar, ob es gleich ist oder nicht.

+0

Die db-Datei wird im Anwendungsverzeichnis erstellt und gelöscht. In der Tat das gesamte Verzeichnis entfernt Ja, ich verwende den gleichen UpgradeCode. –

+0

Ich habe das Problem gefunden .. Simply Alle Dateien hatten Versionsnummern, aber ich habe nicht die Assembly-Info für jeden Build geändert, so dass es die Dateien nicht ersetzt. Vielen Dank für den Hinweis –

+0

Ja, die Überschreibungsregeln der Dateiversion gelten, daher müssen die Versionen inkrementiert werden. Freut mich, dass du es gefunden hast. – PhilDW

Verwandte Themen