cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Geotinc
Level 3

Only one primary output gets shared dll

Hello,

I have a problem with Installshiel 2013,
My setup project install five programs in differents folder
-> Folder 1
-> Folder 2
-> Folder 3
-> Folder 4
-> Folder 5

If programs in folder 1, 2 and 3 reference the same dll (test.dll), the file test.dll will only be deploy in Folder 1 (not folder 2 nor foplder 3).
So when I try to run the program in Folder 2, it tell me that the file test.dll is missing...

How can I solved that ? How can we force dll to be copied to each folders ?

It's a critical issue for us

Thanks in advance
Labels (1)
0 Kudos
(3) Replies
DLee65
Level 13

First of all, hopefully this is a basic MSI installation. If so you should be able to make use of the duplicate file table.

Now if I understand your situation correctly.
file test.dll should always be installed to folder1. This should be its primary destination folder.

It sounds as if files in folder2 and folder3 are optional, so duplicating the file to these directories will also be optional.
So lets say you have a file.exe in folder2 that is being copied in. I believe it is possible to setup a duplicate file action for test.dll from folder1 to folder2 and associate it with the component for file.exe that goes in folder2.

http://msdn.microsoft.com/en-us/library/aa368335%28v=vs.85%29.aspx

The same principle would apply to folder3. Create another duplicate file record.

Now, one might ask since you have a DLL file that is shared why does it not have a load library so it can be registered. I can only think that this is possibly a 3rd party DLL and the company has no control over its development, or possibly this is a legacy DLL for your company and the company does not want to touch it. In any case, I think the above will work, providing you are using a MSI project. If you are using InstallScript then you have to insert some type of copy file mechanism after the files have copied.
0 Kudos
Geotinc
Level 3

Sorry for my late answer.

Your solution work only if all the output are desktop applications.

In my case, I have three vsto Word add in (visual studio tools for office) and two desktop applications.

Desktop1 - Desktop2 - Vsto1 - Vsto2 - Vsto3
These five projects reference a dll (Core.dll)

I had a primary output for earch project, so we have :
[INSTALLDIR]\Desktop1\[Output Desktop1]
[INSTALLDIR]\Desktop2\[Output Desktop2]
[INSTALLDIR]\Vsto1\[Output Vsto1]
[INSTALLDIR]\Vsto2\[Output Vsto2]
[INSTALLDIR]\Vsto3\[Output Vsto3]

When I run the installer,
Core.dll is only in [INSTALLDIR]\Desktop1\Core.dll

For Desktop2, I can manually add the dll with "Add files", it's not a problem.

But I cannot do that for the VSTO(s) because if I do that when I lauch the vsto add in, it tell me that the manifest is incorrect

For information, if I had only one vsto output, everything works well.

This issue begins to be critical for us.
Thansk in advance for your answer.

Geotinc
0 Kudos
Geotinc
Level 3

Here is the screenshot of the error I have :


The dll which have a different computed hash is a shared dotnet 4.5 library.
0 Kudos