cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mumbles
Level 7

GAC 64 install

Hello all,

Just wanted to hear if anyone has placed files in the GAC64 dir yet? We need to have a file out there, and it's not one of the predefined folders for Installshield.

Any help would be greatly appreciated.
Labels (1)
0 Kudos
(7) Replies
mumbles
Level 7

I think this may be a bug. When i try to install a 64 bit dll into the regular GAC predefined folder, it crashes. I tried to copy the files into C:\Windows\Assembly\GAC_64 but it literally installs the file there, it doesnt' use Fusion and get properly installed.

Anyone have any ideas? It's getting pretty desperate over here. Thx.
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

MSI doesn't provide any notion of a 32-bit or 64-bit GAC folder (compared to Program Files or System32). To install an assembly to the GAC usually requires setting its destination to GlobalAssemblyCache and then leaving the .NET Application File empty for the component (the assembly also needs to be the keypath of the component). You could try marking the component as 64-bit. However, since MSI delegates the installation of assemblies to the GAC, the final location Fusion chooses for the assembly may be based on the architecture the assembly targets (MSIL, x86, x64, etc.). Since MSIL assemblies can be loaded by either a 32-bit or 64-bit framework, it would not seem to make sense that they would be installed to a specific 64-bit GAC folder.

In any event, the purpose of the GAC is generally to abstract away specific locations where shared assemblies are on the machine, in which case the framework knows where and how to locate an assembly based on its metadata. This is probably why MSI does not expose any specific folder structure for installing to the GAC, and instead uses the information populated in the MsiAssembly and MsiAssemblyName tables to install assemblies as needed.
0 Kudos
mumbles
Level 7

Great, i'll give it another try and see if that works by setting those. thanks!
0 Kudos
mumbles
Level 7

One more thing, i sort of disagree on. I'm not convinced that MSI has caught up to 64 bit GAC. We have an installer here for TxTextControl 15.0 and that places files specifically into the 64 Bit GAC. I'll try what you suggested above, but if that still doesn't work, something else is at play here.
0 Kudos
mumbles
Level 7

No luck with the above steps... it basically crashes when i try to install to the GAC with it set to 64bit or not. I think it understands the architecture internally. Error is #1938.
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

With the exception of incorrect information populated in the tables of your MSI package, there isn't much that we can do about this behavior. You may try validating your MSI package to ensure that no validation errors or warnings are flagged for tables such as MsiAssembly and MsiAssemblyName. If this doesn't provide any information, you may try contacting Microsoft directly for additional assistance, as the MSI documentation for these tables and installing assemblies to the GAC does not address anything concerning the physical locations in the GAC assemblies may be copied to, nor is there anything addressing installation of 32-bit or 64-bit assemblies.

If there is an issue with the assembly information populated in the MSI package that is the cause of this behavior, please let us know so that this can be addressed.
0 Kudos
mumbles
Level 7

I'm going to email them directly to see how they did it. All i know is when i try to put a 64 bit dll, which is marked as a 64 bit component, in a 64 bit templated MSI, it crashes with error 1938.

I'll investigate further and post back if anything comes from it.
0 Kudos