Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 5

Installshield / Visual Studio "primary output" and missing dependencies

Hi there,

I've seen many unanswered questions regarding this on the forums, and wondered if anyone has a resolution.

It appears that if you have an assembly being shared between a couple of "primary output(s)" in a solution, IS won't pick it up or install it to more than one location. It seems like it should be as simple as creating a folder, putting a primary output from a project into that folder in the Project Assistant, and the files should get laid down? Dependencies on other third party assemblies (such as entity frameworks dlls) also seems to suffer from this issue.

I really don't want to have to manually add every file to the installer...isn't that the point of primary output?

Am I doing something wrong, or is this just the way it works?


Labels (1)
0 Kudos
(6) Replies
Level 13

Hi Chris,
I am running into the same problem. Did you ever figure this out? What did you do to resolve?
0 Kudos
Level 13

There may be a better solution, but here is what I am doing right now to resolve this:
Visual Studio Solution Explorer
Click on the appropriate InstallShield Project
Project Assistant
Application Files
Drill down to the folder that should contain the missing file(s)
Add Files (add missing files as needed)

I am using VS 2013 and InstallShield 2013 Premier
0 Kudos
Level 13

I am not familiar with the Visual Studio model. However, for duplicate files, I need to select the component that contains the file to duplicate. Expand your component view and select 'Advanced Settings > Other Data'. On the right select DuplicateFile. This takes me to the Direct Editor mode.
Click on the New button and enter the data for the file to duplicate. The key here is that you will select your source file from the appropriate component and then make sure you specify the appropriate destination folder. You have to setup the directory table.

So lets say I have a file, foo.dll, that needs to be installed to [INSTALLDIR] and [BIN]. BIN dir is a directory off of COMMONFILES, C:\Program Files (x86)\\Bin.
1. Configure your destination directory by setting the COMMONFILES_APPDIR directory with a parent directory of COMMONFILES. Directory: COMMONFILES_APPDIR, Directory_Parent: COMMONFILES, DefaultDir:
2. Configure your BIN directory with a parent directory of 'COMMONFILES_APPDIR'. Directory: BIN, Directory_Parent: COMMONFILES_APPDIR, DefaultDir: Bin

Now configure the Duplicate file table
1. Click the new button.
2. Specify a unique file key, such as DupFoo.dll
3. Specify the source component, such as Foo.dll (this is usually the default component unless you are using dynamic file linking. I do not recommend dynamic file linking for duplicate files).
4. Select the appropriate file from the selected component.
5. Specify a destination name. If the file name is longer than 8 characters then you MUST specify a short name for the file. For example Foo12345678.dll would be listed as FOO123~1.DLL|Foo12345678.dll
6. Specify your destination directory. This must be a property only from the directory table as described above.

Voila! Once you have compiled and installed, the file is first installed to the component target directory. After all files are installed then the duplicate file process will copy that file from the component target directory to the destination directory.

Is this painful ... yes.
However, do not take the 'shortcut' trying to copy the same source file to a different component. If you ever do patches to the file I believe that component rules will be broken and you may not get a desired result.

Note that this is a requirement for Windows Installer, MSI, and not for InstallShield.

EDIT: OOPS, I think I might have misunderstood the original question. It goes to show, read 3x and answer once. I tried to delete the post but it fails to delete.
0 Kudos
Level 3

I have the same issue as well. As far as "Note that this is a requirement for Windows Installer, MSI, and not for InstallShield."
I really don't understand how this is an MSI issue and not install shield. Why can't Install Shield just create the duplicate table entry's for me if this is an MSI requirement?

Link back to my post in 2015
0 Kudos
Level 3

I am having same problem in VS 2015. I am going to try making 3 installers and see if it works and having one main one launch the others. Still as far as I am concerned this is a bug. For web app deployments dlls do not get shared.
0 Kudos
Level 2

I'm having the same problem with VS2015. Is there any resolution for this?
0 Kudos