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

Merge Module and GAC


13 replies to this topic

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 30 May 2007 - 21:29

I'm running into a problem where I have a merge module with about 7 files in it, twice. (The first set is a customizable location and the second set goes to the GAC.) My problem is that the set that's supposed to go in the GAC is only making it to the root drive (ie. C:\). The other set is fine. Any ideas what could be happening?

-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 31 May 2007 - 17:20

The destination directory name might be mangled with the module ID in the resulting .msm file (not visible in your project file)

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 31 May 2007 - 19:06

Any suggestions as to what I can do about it? I tried making both the GAC location and the secondary location configurable and assign one to go to the GAC in the ism that consumes the msm, but that didn't work either. It's still going to C:\ for some reason.

Thanks



-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 01 June 2007 - 14:40

Did you examine the msi file to see if mangling is really the problem? And/or generate a verbose log of the install to see how and when the driectory gets set.

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 13 June 2007 - 17:58

Sorry, I got sidetracked for a couple weeks, but I'm back to this problem.

I've actually abandoned the MergeModule and just tried to put these files directly in my project. So I have 2 copies of a set of 7 files (Microsoft.Practices.EnterpriseLibrary.*.dll) in my project. The first set is getting installed to a subdirectory of [INSTALLDIR] and that seems to be getting installed correctly. The second set is set to install to the GlobalAssemblyCache. The component's source location for each one is GlobalAssemblyCache. When the media is built, I can verify that the files are built to Disk1\GlobalAssemblyCache directory. When the installation is run, the files don't make it to the GAC and instead end up in the root of my C:\ drive.

I searched through my verbose log file and pulled out all references to 1 of these 7 files.

CODE

(SERVER)    &nbspMSI (s) (70:AC) [17:14:35:922]: Executing op: ComponentRegister(ComponentId={08CF15D2-9D6A-41BB-A4FB-BEE6FE68DA8A},KeyPath=C:\Program Files\Bently Nevada\System 1\Licensing\Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)
(UNKNOWN)    &nbsp1: {466E8E40-5191-4A8C-8FD4-B68F83EF60D1} 2: {08CF15D2-9D6A-41BB-A4FB-BEE6FE68DA8A} 3: C:\Program Files\Bently Nevada\System 1\Licensing\Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll
(SERVER)    &nbspMSI (s) (70:AC) [17:14:35:922]: Executing op: ComponentRegister(ComponentId={B78CEA51-4104-49B4-A59F-E157B9E8F04B},KeyPath=C:\Microsoft.Practices.EnterpriseLibrary.Common.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)
(UNKNOWN)    &nbsp1: {466E8E40-5191-4A8C-8FD4-B68F83EF60D1} 2: {B78CEA51-4104-49B4-A59F-E157B9E8F04B} 3: C:\Microsoft.Practices.EnterpriseLibrary.Common.dll


And a bit further down...

CODE

(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:360]: Executing op: FileCopy(SourceName=MICROS~1.DLL|Microsoft.Practices.EnterpriseLibrary.Common.dll,SourceCabKey=microsoft.practices.7,DestName=Microsoft.Practices.EnterpriseLibrary.Common.dll,Attributes=8192,FileSize=57344,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.1.0.0,Language=0,InstallMode=58982400,,,,,,,)
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:360]: File: C:\Program Files\Bently Nevada\System 1\Licensing\Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll; To be installed; Won't patch; No existing file
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:360]: Source for file 'Microsoft.Practices.EnterpriseLibrary.Common.dll' is uncompressed, at '\\nvrnodv30psge\C$\6.5 Installs\12Jun07Daily\DISK1\program files\Bently Nevada\System 1\Licensing\Bin\MSPE\'.
(UNKNOWN)    &nbspInstallFiles: C:\Program Files\Bently Nevada\System 1\Licensing\Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll SIZE: 57344 bytes
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:360]: Note: 1: 2318 2: C:\Program Files\Bently Nevada\System 1\Licensing\Bin\Microsoft.Practices.EnterpriseLibrary.Common.dll
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: Executing op: SetTargetFolder(Folder=C:\)
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: Executing op: SetSourceFolder(Folder=1\Global~1\|GlobalAssemblyCache\)
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: Executing op: FileCopy(SourceName=MICROS~1.DLL|Microsoft.Practices.EnterpriseLibrary.Common.dll,SourceCabKey=microsoft.practices.,DestName=Microsoft.Practices.EnterpriseLibrary.Common.dll,Attributes=8192,FileSize=57344,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.1.0.0,Language=0,InstallMode=58982400,,,,,,,)
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: File: C:\Microsoft.Practices.EnterpriseLibrary.Common.dll; To be installed; Won't patch; No existing file
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: Source for file 'Microsoft.Practices.EnterpriseLibrary.Common.dll' is uncompressed, at '\\nvrnodv30psge\C$\6.5 Installs\12Jun07Daily\DISK1\GlobalAssemblyCache\'.
(UNKNOWN)    &nbspInstallFiles: C:\Microsoft.Practices.EnterpriseLibrary.Common.dll SIZE: 57344 bytes
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: Note: 1: 2318 2: C:\Microsoft.Practices.EnterpriseLibrary.Common.dll
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:579]: Executing op: SetTargetFolder(Folder=C:\Program Files\Bently Nevada\System 1\Licensing\Bin\)
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:579]: Executing op: SetSourceFolder(Folder=1\PROGRA~1\BENTLY~1\SYSTEM~1\LICENS~1\Bin\MSPE\|program files\Bently Nevada\System 1\Licensing\Bin\MSPE\)
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:579]: Executing op:



I can't paste the entire log file cause it's about 32MB.

Anyone have any idea what's happening?

-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 13 June 2007 - 18:05

This line looks suspicious:
QUOTE
(SERVER)    &nbspMSI (s) (70:AC) [17:35:02:469]: Executing op: SetTargetFolder(Folder=C:\)


spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 13 June 2007 - 21:40

Yeah, I noticed that too. What would cause that?

-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 18 June 2007 - 17:29

You wrote:
QUOTE
The component's source location for each one is GlobalAssemblyCache.

Shouldn't the destination be set to GAC?

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 18 June 2007 - 17:37

Yes, and it is. Remember the Source Location property of a component tells the compiler where to put the files in that component on the source media (as long as it's uncompressed). The property basically creates a subdir on the destination media for the files. In my case, a folder called GlobalAssemblyCache is created under Disk 1, and the files are put there.

-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 18 June 2007 - 18:51

And the destination is set to the predefined GlobalAssemblyCache folder?

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 22 June 2007 - 18:32

Yes. It's set to [GlobalAssemblyCache]. Take a look at the attached screenshot.

Attached Files



-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 June 2007 - 11:23

Looks good. Some ideas what you might check:
Do you get any build warnings?
Does it work if you set .NEt Scan at Build to "Properties" instead of "none"?
How does the Directory table entry look like for the GlobalAssemblyCache, in InstallShield's Direct Editor and in the resulting .msi file?


Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 23 June 2007 - 15:57

It is a shot in the dark, but I would check the Property table to make sure there are no properties set to C:\ (Except perhaps ROOTDRIVE).
Regards
-Stein Åsmul

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 27 June 2007 - 23:56

Setting the .NET scan at build to "Properties" did it. Apparently, if it's set to "None", the assembly is not added to the MSIAssembly tables and as such, the MsiPublishAssemblies is not run on that assembly.

Thanks for the help! Much appreciated!

-- spdygnlz --