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

64-bit versus 32-bit msiexec.exe


2 replies to this topic

MSIYER

MSIYER
  • Full Members
  • 90 posts

Posted 14 June 2011 - 13:20

I could successfully uninstall certain 64-bit applications using 32-bit msiexec.exe. I did this manually by doing something like the below at command-line:

C:\\Windows\\System32\\msiexec.exe /X{F1142781-9BBA-435A-AF5A-6243CFE746DB}

Also, trying to launch msiexec.exe through LaunchAppAndWait forces the use of 32-bit msiexec.exe although I explicitly mention the 64-bit path:
LaunchAppAndWait("C:\\Windows\\System32\\msiexec.exe", " /X{F1142781-9BBA-435A-AF5A-6243CFE746DB}", LAAW_OPTION_WAIT);

The reason is that Installshield script engine is still 32-bit.

The question is:
What problems can one face while uninstalling 64-bit apps using 32-bit msiexec.exe?

MSIYER

MSIYER
  • Full Members
  • 90 posts

Posted 15 June 2011 - 10:29

Further Analysis:

NOTE: All scenarios mentioned are for 64-bit machines only.
Upgrade here means MAJOR UPGRADE only

Scenario 1:
A 32-bit application is installed on the machine. The package is marked as Intel;xxxx in the Template Summary. The files contained are dropped to Program Files(x86) folder. Uninstall also happens fine. 32-bit msiexec.exe is used for install and uninstall.
Upgrading the app using another 32-bit package is also as desired.

Scenario 2:
A 32-bit app is already installed. When upgrading it using 64-bit package, the WIN64DUALFOLDERS determines what happens to the path variables. The below log file entry clearly illustrates this:
WIN64DUALFOLDERS: Substitution in 'C:\Program Files (x86)\SHAKESPEARE_INC\Othello\' folder had been blocked by the 1 mask argument (the folder pair's iSwapAttrib member = 0).
This means that the file system redirection will not happen. All paths will be defined as desired. For example:
ProgramFilesFolder will be C:\Program Files (x86)
ProgramFiles64Folder will be C:\Program Files
and so on...
The end result would be as expected.
The 64-bit msiexec.exe is used in the whole process.

Scenario 3:
A 64-bit app is installed. The next version is a 32-bit app with a 32-bit installer(for whatever reason).
32-bit msiexec.exe is invoked and the uninstall of 64-bit begins. This is followed by the install of 32-bit app.
The 64-bit application is uninstalled and 32-bit app installs properly but 64-bit app folders do not go anywhere.
The registry read-write is properly handled by the Windows Installer in conjunction with the OS services while
WIN64DUALFOLDERS changes all path variables during install. The log has the following entry:
WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\' folder path. (mask argument = 0, the folder pair's iSwapAttrib member = 0).
This means:
ProgramFilesFolder will be C:\Program Files (x86)
ProgramFiles64Folder will become C:\Program Files (x86)

Also, 64-bit app uninstalled using 32-bit msiexec.exe did not display this behaviour. Even the folders disappeared after uninstall.


MSIYER

MSIYER
  • Full Members
  • 90 posts

Posted 15 June 2011 - 12:57

The questions that arise are as follows:
What problems can one face while uninstalling 64-bit apps using 32-bit msiexec.exe? I could easily uninstall 64-bit apps using 32-bit msiexec.

If one can easily uninstall 64-bit apps using 32-bit msiexec, why uninstalling 64-bit apps fail during major upgrade through a 32-bit package? The failure lies only in the fact that the folders are not removed.

Is uninstalling 64-bit app during 32-bit major upgrade install possible only through a custom action?