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

Migration Win32 nach x64 Setup


3 replies to this topic

Toto

Toto
  • Full Members
  • 9 posts

Posted 11 August 2010 - 12:30

Hallo zusammen,

ich bin gerade dabei, ein Basic-MSI-Projekt in InstallShield 2009 Pro German mit wahlweise deutschen und englischen Dialogen von 32-Bit auf 64-Bit umzubauen und habe dabei einige Fragen.

Ich habe mir schon die Infos in MSDN dazu angeschaut:
http://msdn.microsof...5(v=VS.85).aspx (Windows Installer on 64-bit Operating Systems)
http://msdn.microsof...1(v=VS.85).aspx (About Windows Installer on 64-Bit Operating Systems)
http://msdn.microsof...0(v=VS.85).aspx (64-bit Windows Installer Packages)
http://msdn.microsof...6(v=VS.85).aspx (Using 64-Bit Windows Installer Packages)
http://msdn.microsof...8(v=VS.85).aspx (64-Bit Custom Actions)

Vorab habe ich mein gesamtes Projekt-Verzeichnis dupliziert und umbenannt.
Ebenso die ISM darin.
Die zu installierende 32-Bit Dateien wurden durch die entsprechenden 64-Bit Dateien gleichen Namens darin ersetzt.

In der ISM habe ich schon folgendes gemäß der o.g. MSDN-Artikel erledigt:

•The value "Intel64" must be entered in the platform field of the Template Summary property if and only if the package runs on an Intel64 processor.
•The value "x64" must be entered in the platform field of the Template Summary property if and only if the package runs on an x64 processor.
•Indicate in the Template Summary property of the package summary information stream that this is a 64-bit package. Enter "Intel64" into the platform field of the Template Summary property if the package is to be run on an Intel64 processor. Enter "x64" if the package is to be run on a 64-bit extended processor. A package cannot be marked as supporting both Intel64 and x64 platforms, a Template Summary property value of "Intel64,x64" is invalid. A package cannot be marked as supporting both 32-bit and 64-bit platforms, the Template Summary property values of "Intel,x64" or "Intel,Intel64" are invalid.
•Use optional conditional statements that check the numeric processor level of the computer by referencing the Intel64 or Msix64 property. The Windows Installer sets these properties to the current numeric processor level of the computer and leaves the Intel64 Property undefined if this is not an Itanium-based processor. For more information, see Using Properties in Conditional Statements.
- TreeView/Installationsinformation/AllgemeineInformationen/Stream-Dateiinfo: Vorlagenzusammenfassung=x64;1031 (statt Intel;1031)

Frage: ist x64 korrekt oder müßte es Intel64 sein? (Die 64-Bit Dateien sind unter VisualStudio2008 für x64-Platform erstellt worden)

Frage: ist nur 1031 korrekt oder müßte 1033,1031 für deutsch+englisch sein?

•The Page Count Summary property must be set to the integer 200 or greater, because Windows Installer 2.0 is the minimum version that is capable of installing 64-bit components.
- TreeView/Installationsinformation/AllgemeineInformationen/Stream-Dateiinfo: Schema=200

•Each 64-bit Windows Installer component in the package must include the msidbComponentAttributes64bit bit in the Attributes column of the Component Table.
- TreeView/Organisation/Komponenten: bei allen 64-Bit-Komponenten 64-Bit-Komponente=Ja

•Use the AppSearch Table and AppSearch Action to do optional searches of the registry for existing 64-bit components. To search for existing 64-bit components, include the msidbLocatorType64bit bit in the Type column of the RegLocator Table. For more information, see Searching for Existing Applications, Files, Registry Entries or .ini File Entries Property
- TreeView/VerhaltenUndLogik/Systemsuche: alle Registry-Suchen ändern: "64-Bit-Bereich der Registrierung durchsuchen" aktivieren

•Use optional conditional statements that check the version of the 64-bit operating system by referencing the VersionNT64 property. Windows Installer sets this property to the 64-bit Windows version and leaves VersionNT64 undefined if the operating system is not 64-bit Windows. For more information, see Using Properties in Conditional Statements.
- nur 64-Bit OS: TreeView/Installationsinformation/AllgemeineInformationen/Produkteigenschaften/Installationsbedingngen: VersionNT64, {ID_STRING1} "This Setup is only supporting 64-bit Operating Systems. Please use 32-bit Setup instead." / "Dieses Setup unterstützt nur 64-Bit Betriebssysteme. Bitte benutzen Sie stattdessen das 32-Bit Setup."

•Obtain the paths to system folders by referencing the System64Folder Property, ProgramFiles64Folder Property, and CommonFiles64Folder Property for the 64-bit folders and the SystemFolder Property, ProgramFilesFolder Property, and CommonFilesFolder Property for the 32-bit folders.
- TreeView/Organisation/Komponenten: bei allen 64-Bit-Komponenten Ziel=xxx64Folder (statt xxxFolder)

Frage: sind auch in Treeview/ZusätzlicheTools/DirectEditor alle anderen Vorkommen von xxxFolder in Tabellen zu ersetzen mit xxx64Folder?

Frage: ist in TreeView/Installationsinformation/AllgemeineInformationen/Produkteigenschaften/Produktcode eine neue GUID zu erzeugen?

Frage: ist in TreeView/Installationsinformation/AllgemeineInformationen/Produkteigenschaften/Update-Code eine neue GUID zu erzeugen?

•If a 64-bit ODBC Driver Manager is to be installed, the component that carries it should be named ODBCDriverManager64. The ODBC Driver Manager must be authored in the installer package and a component named ODBCDriverManager64 must be included. The manager will be installed if necessary.

Frage: was ist hier zu tun? (Es wird ODBC für einen MDB-Datenban-Zugriff benötigt)

•Verify that the application uses the correct GUID when referencing a 64-bit component. If there are 32-bit and 64-bit versions of a specific component, these should have different component ID GUIDs.

Frage: sind in TreeView/Organisation/Komponenten bei allen 64-Bit-Komponenten neue GUID für Komponenten-Code zu erzeugen?


Weiterhin schon erledigt:
- Pfade anpassen: TreeView/Medien/Pfadvaribablen/DefinierterWert

- alte (32-Bit) Builds entfernen: TreeView/Releases/<Release-Name>: alle alten Builds löschen

- Projekt-Ordner anpassen: TreeView/Releases/<Release-Name>/<aktuellesBuild: Release-Speicherort angepasst

Frage: ist das bisherige Vorgehen korrekt?
Frage: was ist noch zu tun?

Vielen Dank im voraus.
Best Regards / Mit freundlichen Grüßen
Andreas Marschall

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 11 August 2010 - 14:17

Ich kann im Moment nicht alle Fragen beantworten, aber immerhin ein paar:

QUOTE
Frage: ist x64 korrekt oder müßte es Intel64 sein?
Intel64 steht für Itanium-Prozessor.

QUOTE
Frage: ist nur 1031 korrekt oder müßte 1033,1031 für deutsch+englisch sein?
Bei mir trägt InstallShield beim Build die anderen Sprachen automatisch ein. Schau mal in die fertige MSI-Datei (mit InstEd zum Beispiel)

QUOTE
Frage: ist in TreeView/Installationsinformation/AllgemeineInformationen/Produkteigenschaften/Produktcode eine neue GUID zu erzeugen?
Ja: "The 32-bit and 64-bit versions of an application's package must be assigned different product codes." Auch die 64-Bit-Komponenten müssen einen andere GUID bekommen als ihre 32-Bit Gegenstücke.

QUOTE
Frage: ist in TreeView/Installationsinformation/AllgemeineInformationen/Produkteigenschaften/Update-Code eine neue GUID zu erzeugen?
Neuer UpgradeCode ist nicht erforderlich, kann aber sinnvoll sein wenn du beim Major Upgrade zwischen den verschiedenen Varianten unterscheiden willst. Ändern schadet auch nicht, schlimmstenfalls musst du einen zweiten Eintrag in der Upgrade Tabelle anlegen.

QUOTE
Frage: sind in TreeView/Organisation/Komponenten bei allen 64-Bit-Komponenten neue GUID für Komponenten-Code zu erzeugen?
ja. Oder du fügst die Komponenten/Dateien neu hinzu, dann bekommen sie automatisch neue GUIDs.


Toto

Toto
  • Full Members
  • 9 posts

Posted 12 August 2010 - 14:42

Hallo Stefan,
vielen Dank für Deine Hilfe. smile.gif

QUOTE
Intel64 steht für Itanium-Prozessor.

Ok, danke

QUOTE
Bei mir trägt InstallShield beim Build die anderen Sprachen automatisch ein. Schau mal in die fertige MSI-Datei (mit InstEd zum Beispiel)

Ich habe die ISM mit IS geöffnet und x64;0,1031,1033 gefunden. Schein also automatisch reingekommen zu sein, aber weshalb die 0 ?
In InstEd habe ich die Info nicht gefunden. Wo muß ich da gucken?

QUOTE
Ja: "The 32-bit and 64-bit versions of an application's package must be assigned different product codes." Auch die 64-Bit-Komponenten müssen einen andere GUID bekommen als ihre 32-Bit Gegenstücke.

Neuer UpgradeCode ist nicht erforderlich, kann aber sinnvoll sein wenn du beim Major Upgrade zwischen den verschiedenen Varianten unterscheiden willst. Ändern schadet auch nicht, schlimmstenfalls musst du einen zweiten Eintrag in der Upgrade Tabelle anlegen.

ja. Oder du fügst die Komponenten/Dateien neu hinzu, dann bekommen sie automatisch neue GUIDs.


Ok, ich habe überall neue GUIDs erzeugen lassen.
In freier Wildbahn sollten sich meine 32- und 64-Bit-Setups allerdings sowieso nicht auf einem PC begegnen, da aufgrund der Natur der zu intstallierenden Treiber (TSPs müssen zwingend die zum OS passende Bitbreite haben) ich jeweils die 32- und 64-Bit-Setups per Installationsbedingung (Not) VersionNT64 auf "falschem" OS verriegelt habe.


Das 64-Bt Setup läuft jetzt soweit durch. smile.gif

Allerdings gibt es bei einigen der installierten Komponenten noch zwei Probleme:
1) zwei eigene x64-ControlPanel-Applets werden in der Systemsteuerung nur mit "leerem" Icon und ohne Text angezeigt

Hat dazu jemand eine Idee?

2) einige Komponenten müssen aus einer MDB-Datenbank lesen. Der Zugriff geht jedoch schief mit „Could not install DSN - Possibly the Dirver is not installed“ gefolgt von "Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf."

Kann das was mit der u.g. ODBC-Installation zu tun haben?

QUOTE
•If a 64-bit ODBC Driver Manager is to be installed, the component that carries it should be named ODBCDriverManager64. The ODBC Driver Manager must be authored in the installer package and a component named ODBCDriverManager64 must be included. The manager will be installed if necessary.

Edited by Toto, 18 August 2010 - 04:43.

Best Regards / Mit freundlichen Grüßen
Andreas Marschall

Toto

Toto
  • Full Members
  • 9 posts

Posted 18 August 2010 - 05:10

QUOTE
Allerdings gibt es bei einigen der installierten Komponenten noch zwei Probleme:
1) zwei eigene x64-ControlPanel-Applets werden in der Systemsteuerung nur mit "leerem" Icon und ohne Text angezeigt


Die lag an korrupten Argumenten beim Aufruf des Einsprungspunktes CPlApplet().

QUOTE
2) einige Komponenten müssen aus einer MDB-Datenbank lesen. Der Zugriff geht jedoch schief mit „Could not install DSN - Possibly the Dirver is not installed“ gefolgt von "Der angegebene DSN weist eine nicht übereinstimmende Architektur von Treiber und Anwendung auf."


Dies lag am fehlenden 64-Bit ODBC Microsoft Access Driver.
Den gibt es z.B. im Microsoft Access Database Engine 2010 Redistributable in der AccessDatabaseEngine_X64.exe.
Dabei ist darauf zu achten, im Connection-String bzw. in SQLConfigDataSource() den Treiber als "Microsoft Access Driver (*.mdb, *.accdb)" zu benennen (nicht wie früher "Microsoft Access Driver (*.mdb)").
Zur Installation des Microsoft Access Database Engine 2010 Redistributable siehe meinen separaten Diskussionsbeitrag.

Edited by Toto, 18 August 2010 - 05:58.

Best Regards / Mit freundlichen Grüßen
Andreas Marschall