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?
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.
Strange duplication of files?
Started by
spdygnlz
, Nov 28 2007 23:05
5 replies to this topic
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.
- 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.
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.
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 --
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.
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)  MSI (s) (C4:D4) [16:03:18:500]: Feature: EDSProxy; Installed: Absent; Request: Local; Action: Local ... (STATE)  MSI (s) (C4:D4) [16:03:18:500]: Feature: WebDisplay; Installed: Absent; Request: Null; Action: Null (STATE)  MSI (s) (C4:D4) [16:03:18:515]: Component: ConfigHelperInterop.dll; Installed: Absent; Request: Local; Action: Local ... (STATE)  MSI (s) (C4:D4) [16:03:18:531]: Component: ConfigHelperInterop.dll_WD; Installed: Absent; Request: Local; Action: Local ... (STATE)  MSI (s) (C4:D4) [16:03:18:640]: Component: __ConfigHelperInterop.dll65; Installed: Null; Request: Local; Action: Local (STATE)  MSI (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)  MSI (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)  1: {466E8E40-5191-4A8C-8FD4-B68F83EF60D1} 2: {697B40D2-07F3-4E48-8EBD-D15E79654883} 3: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll ... (SERVER)  MSI (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)  1: {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)  MSI (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)  MSI (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)  MSI (s) (C4:D4) [16:04:48:515]: Source for file 'confighelperinterop.dll' is compressed (UNKNOWN)  InstallFiles: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll SIZE: 10240 bytes (SERVER)  MSI (s) (C4:D4) [16:04:48:515]: Note: 1: 2318 2: C:\Program Files\My Company\System 1\ConfigHelperInterop.dll (SERVER)  MSI (s) (C4:D4) [16:04:48:515]: Note: 1: 2360 ... (SERVER)  MSI (s) (C4:D4) [16:07:08:343]: Executing op: SetTargetFolder(Folder=C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\) (SERVER)  MSI (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)  MSI (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)  MSI (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)  MSI (s) (C4:D4) [16:07:08:343]: Source for file 'confighelperinterop.dll1' is compressed (UNKNOWN)  InstallFiles: C:\Program Files\Common Files\My Company\Web Display\Enterprise Templates\bin\ConfigHelperInterop.dll SIZE: 10240 bytes (SERVER)  MSI (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)  MSI (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)  MsiPublishAssemblies: 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)  MSI (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)  MSI (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)  MsiPublishAssemblies: 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)  MSI (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 --
Posted 30 November 2007 - 15:34
Could this be related to COM Interop registration? What happens if you turn this off as a test?
Stefan Krüger
InstallSite.org twitter facebook
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?
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 --