Ich versuche zu verhindern, dass meine Dienste ihre Einstellungen (Anmeldeinformationen und andere Optionen) bei größeren Upgrades in meinem WiX-Installationsprogramm verlieren. Ich folgte dem Rat here, und ich versuche,Verhindern, dass Dienste Einstellungen bei größeren Upgrades in WiX verlieren
<InstallExecuteSequence>
<DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices>
</InstallExecuteSequence>
Aber meine Dienste werden auf Upgrades neu installiert noch zu verwenden, auf jedem Upgrade meine Anmeldeinformationen und andere Service-Einstellungen zu verlieren.
Im Protokoll sieht es so aus, als ob meine Bedingung nur einmal geehrt wird. Ich sehe
MSI (s) (6C:E8) [16:52:53:944]: Skipping action: DeleteServices (condition is false)
und dann ein paar hundert Zeilen später, ich sehe
MSI (s) (6C:A4) [16:52:54:873]: Doing action: DeleteServices
So scheint es mir, dass die zweite DeleteServices ist mein Problem. Kann mir jemand sagen, wie ich das zweite unterdrücken kann oder was ich dafür mache?
Ich benutze das WiX-Toolset 3.7. Hier ist mein Code, Guids offensichtlich entfernt.
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id='*' Name='My Product' Language='1033'
Version='1.0.6' Manufacturer='Me' UpgradeCode='PUT-GUID-HERE' >
<Package Description='My Product' Platform='x86' Id='*'
Manufacturer='Me' InstallerVersion='200' Compressed='yes' />
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."/>
<InstallExecuteSequence>
<DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices>
</InstallExecuteSequence>
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='AgentDir' Name='Agent'>
<Component Id='Binaries' Guid='PUT-GUID-HERE' Win64='no'>
<File Id='AgentExe' Source='../MyProduct/MyExe.exe' KeyPath='yes' ProcessorArchitecture='x86' />
<ServiceInstall Id="TheServiceInstall" Description="[ProductName]" EraseDescription="no" DisplayName="[ProductName]" ErrorControl="normal" Interactive="no" Name="[ProductName]" Start="auto" Type="ownProcess" Vital="yes">
</ServiceInstall>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id='CompleteInstall' Title='My Product' Level='1'>
<ComponentRef Id='Binaries' />
</Feature>
</Product>
</Wix>
Vielen Dank!
Danke, ich habe es nicht als zwei getrennte Prozesse gedacht. Das ältere Produkt hat die DeleteServices-Bedingung "NOT UPGRADINGPRODUCTCODE". Ich habe es nirgends eingesetzt, ich teste es immer noch. Also mein altes Produkt ist identisch mit meinem neuen Produkt, außer dass ich den Build der Produktversion inkrementiere. Auch die "Überspringende Aktion: DeleteServices" kommt zuerst im Protokoll, die "Doing Aktion: DeleteServices" kommt an zweiter Stelle. Ich nehme also an, dass die Deinstallation des alten Produkts genau das tut, was ich möchte, und dass die Installation des neuen Produkts die Dienste löscht. – Brian