i have two Setup Projects for my product.
first a pure x64 package which contains only x64 components. the default location for this package is "ProgramFiles64Folder"
the second one is a pure x86 package which contains only x86 components. the default location for this package is "ProgramFilesFolder"
(Unfortunately my product could not run two instances simultaneously. Not with the same bitness nor different bitness)
therefore both packages are using the same UpgradeCode to achieve that the last installation removes the previous version.
this works very well. The x64 Setup Project detect a previous installation of the x86. The x86 package will be correctly uninstalled and removed.
BUT if i try to install the x86 package while a x64 Package is currently installed the files will not removed.
i found that in this scenario WIN64DUALFOLDERS patch the path of my installed product from <ProgramFiles64Folder> to <ProgramFilesFolder>.
so the RemoveFiles Action points to the wrong directory???
My question: could this be a side effect of the WIN64DUALFOLDERS feature/behavior???
EVIDENCE: i installed the x64 Product into a custom folder, a direct child of the root folder, e.g. c:\Productx64.
After the installation of the x86 Product the x64 Product is complete installed and the files removed.
All is fine because there are no more substitutions from WIN64DUALFOLDERS in my Log File.
My questions:
- is there a way to switch this feature/behavior on/off??
- can anybody show me a case where this feature/behavior is use full???
thanks in advance
--------------------------------------------------------------------------
Ich habe zwei, native, installer projecte für mein Produkt. Eine x86 und eine x64 Variante.
Mit "nativ" meine ich durchgehend konsistent und kein hybrid. Das x64 Paket ist also wirklich ein x64 Paket mit ausschliesslich x64 Komponenten.
Die x64 Variante wird deshalb konsequent auch in den "ProgramFiles64Folder" installiert und die x86 Variante den "ProgramFilesFolder".
Unglücklicherweise kann mein Produkt nicht in mehreren Instanzen gleichzeitig laufen (auch nicht wenn es in einer x86 und x64 variante vorliegt).
Deshalb habe ich beiden Produkten den gleichen UpgradeCode gegeben so das mit der installation eine evtl. vorhandene deinstalliert wird.
In der Praxis passiert folgendes:
Beim Installieren der x64 Version bei vorhandener x86 wird diese vollständig und korrekt deinstalliert.
Das System enthält ein funktionsfähiges und korrekt installiertes x64 Produkt.
Beim Installieren der x86 Version bei vorhandener x64 wird diese korrekt deinstalliert (RemoveRegistryValues, Remove...).
ABER die Dateien werden NICHT entfernt.
Analyse der Logfiles:
Es wird durch "FindRelatedProducts" korrekt ermittelt das bereits eine x64 Version installiert ist und zwar unter "ProgramFiles64Folder".
Bevor jedoch die RemoveFilesAction zum zug kommt wird das INSTALLDIR durch WIN64DUALFOLDERS gepatcht und zwar auf "ProgramFilesFolder".
Jetzt versucht die RemoveFilesAction Dateien zu löschen die es nicht gibt???
Fragen:
Kann man das Verhalten WIN64DUALFOLDERS irgendwie ein/aus-schalten???
Vieleicht kann jemand den Sinn und Zweck dieses Verhaltens erklären und dann daraus eine Strategie ableiten wie man sich das zu nutze macht???
Dank für einen Tip