dll is not included in the application files when publishing

Hi, we want to deploy our solutions company intern via clickonce. which is a nice technology and very useful. But I think the developers of the studio should have given the users more freedom in managing the installation file. In detail we have different software solutions for different problems and for this many of the solutions use the same dlls. The dlls can not be rewritten in the studio beceause we got trouble with the garbage collector. So we used the plain old dll and included them with DllImport.

First it is a pitty that these dlls are not included automatically when publishing and second until now I didn't find a solution to include them in a comfortable way. If I manually add a dll to an assembly which is used in the main application and set the parameters "build action" to any type and "copy to output directory" to "copy if newer" or "copy always" the file will not be added to the application files in the publih register. Even the file won't be available if "show all files" is checked. Only if I add the dll to main application assembly it is available, this is not satisfiable. Does any command exist which makes the dll required? Has anybody an idea to solve this problem or giving a workaround? thanks.

[1236 byte] By [baix] at [2007-12-16]
# 1

It sounds like the files you would like to include are unmanaged COM files. These files usually require registration and therefor are impactfull to the system. Clickonce does not allow these types of changes. I think you have a couple of options:

1. If these are simple COM DLLs that don't need a seperate installer (which sound to be the case) and can be layed down along side your app, but still need to be registered then you can use the RegFree COM functionality to isolate the COM DLL to your application and not require any system registration. The easiest way to do this is to add the COM DLL as a Reference to your project and then set the Isolate Property on the Reference to True. (Search for RegFree COM in the documentation for more information)

2. If you need to install these files to a shared location then you should create a seperate MSI based installer for them. You can create a Bootstrapper Package for this MSI and then include it along with your ClickOnce Application. You will not be able to use clickonce to update these files, but they will be deployed with your initial installation as prerequisits. (Search for Generic Bootstrapper in the documentation for more information). Also creating these manifest will require some work, but there is a community tool that is in the works to help out: http://www.gotdotnet.com/workspaces/workspace.aspx?id=ddb4f08c-7d7c-4f44-a009-ea19fc812545

Regards,
Patrick Baker
Microsoft Visual Basic Deployment & Designer Team


This posting is provided "AS IS" with no warranties, and confers no rights.

PatrickBaker at 2007-9-9 > top of Msdn Tech,Windows Forms,ClickOnce and Setup & Deployment Projects...
# 2

I have a similar situation I am trying to solve in VS 2003 we created a class libary that is referenced via COM interop by Visual Foxpro 7.0. Deployment of this class libary has been an issue because we created an MSI installer and must touch every single workstation because of user permissions on these machines. I was hoping click-once would be our solution so that it would automatically update these clients but it appears that is not an option. My question would be what is the best to update these clients in a simliar fashion to what click-once does with .net 2005 executables.

Thanks,

Curtis

vbnetcoder at 2007-9-9 > top of Msdn Tech,Windows Forms,ClickOnce and Setup & Deployment Projects...