Release Flag - Build für x32 und x64
Posted 12 May 2011 - 21:47
ich erstelle mit einem Installshield Basic MSI Projekt aus IS2010 Releases für x32 und x64. Dazu nutze ich die Release Flags.
Folgende 2 Dinge nerven beim Build:
1. Vor dem Build muss ich immer unter General Information das InstallDir auf "ProgramFilesFolder" oder auf "ProgramFiles64Folder " konfigurieren je nachdem welches Release ich erstelle.
Kann ich das automatisieren?
2. Für das x32 Setup möchte ich eine Bedingung konfigurieren, dass dieses Setup nicht auf einer x64 Plattform durchgeführt werden kann. Die Bedingung ist auch unter General Information und kann somit nicht durch ReleaseFlags gesteuert werden. Kennt jemand eine Lösung, damit ich beim x64 Build die Bedingung nicht immer manuell entfernen muss?
Danke.
Posted 13 May 2011 - 07:29
Das Installationsverzeichnis (INSTALLDIR) könntest Du - je nach Betriebssystem - per CA einmal als "[ProgramFilesFolder]Mein Programm" oder als "[ProgramFiles64Folder]Mein Programm" voreinstellen.
Um zu verhindern, dass Dein Setup auf dem falschen System ausgeführt werden kann, könntest Du z. B. für jedes Release unterschiedliche Namen verwenden ("Mein Programm 32-bit" und "Mein Programm 64-bit"). Per Installationsbedingung könntest Du dann prüfen, ob der Name zum System passt: [ProductName] = "Mein Programm 32-bit" AND NOT VersionNT64 (das habe ich nicht ausprobiert, müsste also erst noch getestet werden, ob das wirklich funktioniert)
Gruß
Jürgen Markert
(Anwender von InstallShield 2016 - Professional Edition)
Posted 17 May 2011 - 18:43
Stefan Krüger
InstallSite.org twitter facebook
Posted 18 May 2011 - 21:08
Danke für Eure Antworten.
1. 2 Setups sind notwendig. Wenn man Komponenten als "64-Bit Komponente" markiert können diese nicht mehr auf 32-Bit Systeme installiert werden. Wenn ich die Komponenten nicht als "64-Bit Komponente" markiere, landen Einstellungen im WoW6432Node der Registry. Das möchte ich vermeiden. Ich erstelle aber beide Setups aus dem gleiche Projekt.
2. Das INSTALLDIR über CA voreinzustellen macht mir noch Schwierigkeiten. Im Setup kann der Benutzer den Pfad individuell anpassen. Das soll auch so bleiben. Somit müsste im UserInterface der Pfad in Abhängigkeit von x32 oder x64 vorkonfiguriert werden, darf aber in der Execute Sequenz dann nicht mehr überschrieben werden. Ein unattended Setup ohne UI muss auch funktionieren. Kann mir jemand sagen an welcher Position ich das dann einfügen muss und was zu tun ist, dass ein vom Benutzer veränderter Pfad in der Execute Sequenz nicht mehr überschrieben wird?
3. Das mit der Bedingung hat super geklappt, danke Jürgen und Stefan.
Posted 20 May 2011 - 08:28
QUOTE |
Wenn ich die Komponenten nicht als "64-Bit Komponente" markiere, landen Einstellungen im WoW6432Node der Registry. |
Wenn es nur den Registrykey betrifft, kann man abfangen, in dem man die Registry-Einträge jeweils in eine separate Komponente einfügt.
QUOTE |
Kann mir jemand sagen an welcher Position ich das dann einfügen muss und was zu tun ist, dass ein vom Benutzer veränderter Pfad in der Execute Sequenz nicht mehr überschrieben wird? |
- Du erstellst pro Bit-Variante eine neue CA Typ 307 (Festlegen einer Eigenschaft)
- Eigenschaftsname: INSTALLDIR
- Eigenschaftswert: [ProgramFilesFolder]Mein Programm (bzw. [ProgramFilesFolder64]Mein Programm)
- Ausführungsplanung: Nur einmal ausführen
- Installations-UI-Sequenz: Nach ValidateProductID
- Installationsauführungssequenz: Nach IsolateComponents
- Bedingung jeweils: NOT VersionNT64 (bzw. VersionNT64)
Teste das bitte mal, sollte so funktionieren! Ich mache das bei einigen meiner Setups ähnlich, frage allerdings nicht "VersionNT" ab.
Gruß
Jürgen Markert
(Anwender von InstallShield 2016 - Professional Edition)
Posted 25 May 2011 - 15:05
danke, grundsätzlich funktioniert das mit dieser Vorgehensweise.
Ein Problem gibt es noch, wenn ich bei einer unattended Installation den property INSTALLDIR mit angebe, wird dieser durch die CA überschrieben.
MSIEXEC.EXE /i "product.msi" /qb /l*v %COMPUTERNAME%.LOG INSTALLDIR="c:\program files\productneu"
Posted 31 May 2011 - 12:38
vielleicht musst Du die "Installationsausführungssequenz" leer lassen, dann könnte es richtig funktionieren!
Gruß
Jürgen Markert
(Anwender von InstallShield 2016 - Professional Edition)
Posted 03 June 2011 - 13:53
nein das funktioniert nicht, weil dann bei einer einer unattended Installation der Property INSTALLDIR nicht mehr in Abhängigkeit von x32 oder x64 konfiguriert wird. Falls jemand eine Lösung kennt, freue ich mich auf eine Info.
Danke.
Posted 06 June 2011 - 08:07
In der Tabelle "Directory" werden die entsprechenden Properties angelegt und können bei Bedarf auch geändert werden. Wenn die Property für den Programmordner nun z. B. [PROGRAMFOLDER] wäre, müsstest du diese bei der Silent Installation angeben: MSIEXEC.EXE /i "product.msi" /qb /l*v %COMPUTERNAME%.LOG PROGRAMFOLDER="productneu"
Du möchtest ja anscheinend nicht den kompletten Wert für [INSTALLDIR] vorgeben, wenn ich dich richtig verstanden habe, sondern nur den eigentlichen Programmordner.
Gruß
Jürgen Markert
(Anwender von InstallShield 2016 - Professional Edition)