Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Release Flag - Build für x32 und x64


8 replies to this topic

mani

mani
  • Full Members
  • 23 posts

Posted 12 May 2011 - 21:47

Hallo zusammen,

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.



Majue

Majue
  • Full Members
  • 185 posts

Posted 13 May 2011 - 07:29

Ist es wirklich notwendig, zwei Setups bereitzuhalten? Wenn Sie die Setups nur wenig voneinander unterscheiden, könntest Du doch besser ein Setup erstellen und - in Abhängigkeit des Betriebssystems - die jeweils benötigten Dateien installieren.

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)


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 17 May 2011 - 18:43

Du musst dafür nicht mal über den ProductName gehen. Du kannst in der Bedingung auch das Property ISReleaseFlags abfragen, das den Wert der Product Configuration Flags bzw. Release Flags enthält.

mani

mani
  • Full Members
  • 23 posts

Posted 18 May 2011 - 21:08

Hallo zusammen,

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.



Majue

Majue
  • Full Members
  • 185 posts

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)


mani

mani
  • Full Members
  • 23 posts

Posted 25 May 2011 - 15:05

Hallo,

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"


Majue

Majue
  • Full Members
  • 185 posts

Posted 31 May 2011 - 12:38

Hallo,
vielleicht musst Du die "Installationsausführungssequenz" leer lassen, dann könnte es richtig funktionieren!

Gruß
Jürgen Markert

(Anwender von InstallShield 2016 - Professional Edition)


mani

mani
  • Full Members
  • 23 posts

Posted 03 June 2011 - 13:53

Hallo,

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.


Majue

Majue
  • Full Members
  • 185 posts

Posted 06 June 2011 - 08:07

[INSTALLDIR] wird aus zwei Elementen gebildet: aus [ProgramFilesFolder] und dem Programmordner

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)