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

Strange duplication of files?


5 replies to this topic

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 28 November 2007 - 23:05

Hi all. I've got a project (in IS) where I need to install the same dll to 2 different places depending on which features are selected for install Normally one would need to be in the INSTALLDIR and the other is placed in a convienent location for a WebServer to access it (with other stuff.) if the Web stuff feature is selected. Anyway, I made 2 components that have different names, added the file to each one, making sure the key is different for each.

Now when I install just a basic feature without the Web stuff, both copies are installed when I expect that only the INSTALLDIR copy should be. Should I be using the Duplicate File table for this? I looked at it but it doesn't seem to allow you to install the files independent of each other. Suggestions?

-- spdygnlz --

VBScab

VBScab
  • Full Members
  • 436 posts

Posted 29 November 2007 - 21:55

Are your components in different features? Are the components conditioned?
- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 29 November 2007 - 23:03

They are indeed in different features. There are also no conditions on the components.

Another interesting tidbit: There are other components in the same feature (the Web stuff one) that don't get installed.

I forgot to mention, although you may have gotten this by inferring from the first post, that the component codes are also different.

-- spdygnlz --

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 30 November 2007 - 01:31

Another bit of information. I don't know if it's relevant or not, but here's hoping...

I'll give details on one set of components. There are 2 sets that have the problem, but they're almost identical with the exception of the file name.


.NET COM Interop file
filename: ConfigHelperInterop.dll
Both components have the same source location for the file

component 1 name: ConfigHelperInterop.dll
component 2 name: ConfigHelperInterop.dll_WD
component 1 Code: {697B40D2-07F3-4E48-8EBD-D15E79654883}
component 2 Code: {39E43762-0839-47BF-A7C1-E0027E93B34E}
Key in component 1: confighelperinterop.dll
Key in component 2: confighelperinterop.dll1
component 1 Destination: [INSTALLDIR]
component 2 Destination: [CommonFilesFolder]My Company\WebDisplay\Enterprise Templates\bin

component 1 is associated with only 1 feature that is always installed (EDSProxy).
component 2 is associated wtih only 1 feature that is hardly ever installed (WebDisplay).

problem: component 2 is always installed.

I apologize, but I'm going to include relevant parts of the log file. It's long. Sorry.

CODE

(STATE)      &nbspMSI (s) (C4:D4) [16:03:18:500]: Feature: EDSProxy; Installed: Absent; Request: Local; Action: Local
...
(STATE)      &nbspMSI (s) (C4:D4) [16:03:18:500]: Feature: WebDisplay; Installed: Absent; Request: Null; Action: Null



(STATE)      &nbspMSI (s) (C4:D4) [16:03:18:515]: Component: ConfigHelperInterop.dll; Installed: Absent; Request: Local; Action: Local
...
(STATE)      &nbspMSI (s) (C4:D4) [16:03:18:531]: Component: ConfigHelperInterop.dll_WD; Installed: Absent; Request: Local; Action: Local
...
(STATE)      &nbspMSI (s) (C4:D4) [16:03:18:640]: Component: __ConfigHelperInterop.dll65; Installed: Null; Request: Local; Action: Local
(STATE)      &nbspMSI (s) (C4:D4) [16:03:18:640]: Component: __ConfigHelperInterop.dll_WD65; Installed: Null; Request: Local; Action: Local

By the way, what are the __componentname65 things?

CODE

(SERVER)    &nbspMSI (s) (C4:D4) [16:04:20:484]: Executing op: ComponentRegister(ComponentId={697B40D2-07F3-4E48-8EBD-D15E79654883},KeyPath=C:\Program Files\My Company\System 1\ConfigHelperInterop.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)
(UNKNOWN)    &nbsp1: {466E8E40-5191-4A8C-8FD4-B68F83EF60D1} 2: {697B40D2-07F3-4E48-8EBD-D15E79654883} 3: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll
...
(SERVER)    &nbspMSI (s) (C4:D4) [16:04:20:828]: Executing op: ComponentRegister(ComponentId={39E43762-0839-47BF-A7C1-E0027E93B34E},KeyPath=C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)
(UNKNOWN)    &nbsp1: {466E8E40-5191-4A8C-8FD4-B68F83EF60D1} 2: {39E43762-0839-47BF-A7C1-E0027E93B34E} 3: C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll



(SERVER)    &nbspMSI (s) (C4:D4) [16:04:48:515]: Executing op: FileCopy(SourceName=CO402F~1.DLL|ConfigHelperInterop.dll,SourceCabKey=confighelperinterop.dll,DestName=ConfigHelperInterop.dll,Attributes=16384,FileSize=10240,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.0.0.0,Language=127,InstallMode=58982400,,,,,,,)
(SERVER)    &nbspMSI (s) (C4:D4) [16:04:48:515]: File: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll; To be installed; Won't patch; No existing file
(SERVER)    &nbspMSI (s) (C4:D4) [16:04:48:515]: Source for file 'confighelperinterop.dll' is compressed
(UNKNOWN)    &nbspInstallFiles: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll SIZE: 10240 bytes
(SERVER)    &nbspMSI (s) (C4:D4) [16:04:48:515]: Note: 1: 2318 2: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll
(SERVER)    &nbspMSI (s) (C4:D4) [16:04:48:515]: Note: 1: 2360
...
(SERVER)    &nbspMSI (s) (C4:D4) [16:07:08:343]: Executing op: SetTargetFolder(Folder=C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\)
(SERVER)    &nbspMSI (s) (C4:D4) [16:07:08:343]: Executing op: SetSourceFolder(Folder=1\Common\MYCOMP~1\WEBDIS~1\ENTERP~1\bin\|Common\My Company\Web Display\Enterprise Templates\bin\)
(SERVER)    &nbspMSI (s) (C4:D4) [16:07:08:343]: Executing op: FileCopy(SourceName=CONFIG~1.DLL|ConfigHelperInterop.dll,SourceCabKey=confighelperinterop.dll1,DestName=ConfigHelperInterop.dll,Attributes=16384,FileSize=10240,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.0.0.0,Language=127,InstallMode=58982400,,,,,,,)
(SERVER)    &nbspMSI (s) (C4:D4) [16:07:08:343]: File: C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll; To be installed; Won't patch; No existing file
(SERVER)    &nbspMSI (s) (C4:D4) [16:07:08:343]: Source for file 'confighelperinterop.dll1' is compressed
(UNKNOWN)    &nbspInstallFiles: C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll SIZE: 10240 bytes
(SERVER)    &nbspMSI (s) (C4:D4) [16:07:08:343]: Note: 1: 2318 2: C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll

Skipping registry stuff
CODE


(SERVER)    &nbspMSI (s) (C4:D4) [16:08:24:859]: Executing op: AssemblyPublish(Feature=EDSProxy,Component={697B40D2-07F3-4E48-8EBD-D15E79654883},AssemblyType=3,AppCtx=C:\Program Files\My Company\System 1\ConfigHelperInterop.dll,AssemblyName=ConfigHelperInterop,Version="1.0.0.0",Culture="neutral",PublicKeyToken="2408CB2792EC00B5",ProcessorArchitecture="MSIL",FileVersion="1.0.0.0",)
(UNKNOWN)    &nbspMsiPublishAssemblies: Application Context:C:|Program Files|My Company|System 1|ConfigHelperInterop.dll, Assembly Name:ConfigHelperInterop,Version="1.0.0.0",Culture="neutral",PublicKeyToken="2408CB2792EC00B5",ProcessorArchitecture="MSIL",FileVersion="1.0.0.0"
(SERVER)    &nbspMSI (s) (C4:D4) [16:08:24:859]: Note: 1: 1402 2: UNKNOWN\Installer\Assemblies\C:|Program Files|My Company|System 1|ConfigHelperInterop.dll 3: 2
...
(SERVER)    &nbspMSI (s) (C4:D4) [16:08:24:906]: Executing op: AssemblyPublish(Feature=Display,Component={39E43762-0839-47BF-A7C1-E0027E93B34E},AssemblyType=3,AppCtx=C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll,AssemblyName=ConfigHelperInterop,Version="1.0.0.0",Culture="neutral",PublicKeyToken="2408CB2792EC00B5",ProcessorArchitecture="MSIL",FileVersion="1.0.0.0",)
(UNKNOWN)    &nbspMsiPublishAssemblies: Application Context:C:|Program Files|Common Files|My Company|Web Display|Enterprise Templates|bin|ConfigHelperInterop.dll, Assembly Name:ConfigHelperInterop,Version="1.0.0.0",Culture="neutral",PublicKeyToken="2408CB2792EC00B5",ProcessorArchitecture="MSIL",FileVersion="1.0.0.0"
(SERVER)    &nbspMSI (s) (C4:D4) [16:08:24:906]: Note: 1: 1402 2: UNKNOWN\Installer\Assemblies\C:|Program Files|Common Files|My Company|Web Display|Enterprise Templates|bin|ConfigHelperInterop.dll 3: 2



I noticed on in here that it said that the feature the second component is associated with is Display, not WebDisplay. These features sit side-by-side, so it's not like one was included because it was the child or parent of the other.

For this example, I did install the Display feature, but I'm positive that the _WD component is not associated with it.

Any clues?

-- spdygnlz --

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 30 November 2007 - 15:34

Could this be related to COM Interop registration? What happens if you turn this off as a test?

spdygnlz

spdygnlz
  • Full Members
  • 106 posts

Posted 30 November 2007 - 19:00

After posting last night I started to look into why it said that component was associated with Display when I knew it wasn't. I opened the built msi with Installshield and realized that the build process had decided to put that _WD component in every feature that had a file that dependency on ConfigHelperInterop.dll, which turned out to be about 7 or 8 features. How annoying!

I had taken great pains to make sure that every feature that needs this file includes the appropriate feature through a bit of creative scripting. I can only associate that component with 1 feature because the Class table can only associate the COM info with 1 feature. Anyway I need to go through now and find all of the files that depend on this and turn off their dependency checks. Ugh.

Is there a way to see which components the build is adding to which feature during the build?

-- spdygnlz --