|
hi all, i created a plug-in architecture type application... there's a main application (executable) that loads dlls into it at runtime. now i'm at a point where i need to test deploy this over the intranet via click once.. problem i'm having is that how do i attach the dlls since it publish wizard will not do this automatically because i'm not referencing these dlls at design time. i'd appreaciate any help. thanks. | | extreme-paranoia Friday, April 10, 2009 4:45 AM | You seemed to want to include the dll's in the deployment. You can't do that "after the fact" unless you use Mage or MageUI to edit the deployment and application manifests. So that's not really flexible either. ClickOnce Must know the files to be included in the deployment. You can't just say "sometimes include this one, sometimes include that one".
Another solution for you would be to write an application that includes one or more of the dlls, and all the app does is copy the files to somewhere in LocalApplicationData (the only place you can write to if running Windows Vista). You could have one of these apps for each of your dll's if you wanted to, or could package them together. Then you main assembly knows where to find them (localapplicationdata). And you could even have the main application check for the dll and kick off the clickonce app to update it, or if it knows which ones the user has paid for or is entitled to, could install them if they're not there, or update them. Of course, your main app has to know to look for the dll, right?
RobinS.
GoldMail.com
Check out my blog at http://robindotnet.wordpress.com - Marked As Answer byRobinDotNetMVP, ModeratorMonday, April 13, 2009 4:27 AM
-
| | RobinDotNet Friday, April 10, 2009 5:31 PM | hi, thanks for the response. i now understand that there is no way to deploy the dlls if they are not added to the project... i did however find an alternate solution to my problem and that is i created a shared folder (with read and execute persmission) in the server machine where the application is deployed... and i programmed my application to look for the dlls on that shared folder. it works ok on intranet and not on internet but i guess this can be a limitation... i was also trying to find a way for the application to look for a folder on the host but i realize that when the application is ran at the client machine, it executes as if the client machine is its host. unlike when creating web applications thru ASP.Net... realizing this, i guess it is impossible to to add them in deployment without referencing them in the project. thanks. - Marked As Answer byRobinDotNetMVP, ModeratorMonday, April 13, 2009 4:27 AM
-
| | extreme-paranoia Saturday, April 11, 2009 1:12 PM | First, add them to your project. Set the build action to "content" and copy-to-output-directory to "copy always".
Open the Application Files dialog and see if the files are in there, and are marked to be included. They should be.
RobinS. GoldMail.com
Check out my blog at http://robindotnet.wordpress.com | | RobinDotNet Friday, April 10, 2009 5:37 AM | i don't get it... isn't the purpose of doing plugin based architecture is so that you don't need to add / reference the dll files at design time? the reason i'm asking is that if i needed to add / reference them at design time, then i should not make it plugin based instead? and the reason i chose to do it plugin based is so that once i finish the main application (executable), the dlls i can just create using a separate project and then build the dll, copy the dll to a specific directory where the main app looks for them. and the main app doesn't need to be modified in order to run them. or maybe i over-estimated the capabilities of a plugin architecture? | | extreme-paranoia Friday, April 10, 2009 6:04 AM | You seemed to want to include the dll's in the deployment. You can't do that "after the fact" unless you use Mage or MageUI to edit the deployment and application manifests. So that's not really flexible either. ClickOnce Must know the files to be included in the deployment. You can't just say "sometimes include this one, sometimes include that one".
Another solution for you would be to write an application that includes one or more of the dlls, and all the app does is copy the files to somewhere in LocalApplicationData (the only place you can write to if running Windows Vista). You could have one of these apps for each of your dll's if you wanted to, or could package them together. Then you main assembly knows where to find them (localapplicationdata). And you could even have the main application check for the dll and kick off the clickonce app to update it, or if it knows which ones the user has paid for or is entitled to, could install them if they're not there, or update them. Of course, your main app has to know to look for the dll, right?
RobinS.
GoldMail.com
Check out my blog at http://robindotnet.wordpress.com - Marked As Answer byRobinDotNetMVP, ModeratorMonday, April 13, 2009 4:27 AM
-
| | RobinDotNet Friday, April 10, 2009 5:31 PM | hi, thanks for the response. i now understand that there is no way to deploy the dlls if they are not added to the project... i did however find an alternate solution to my problem and that is i created a shared folder (with read and execute persmission) in the server machine where the application is deployed... and i programmed my application to look for the dlls on that shared folder. it works ok on intranet and not on internet but i guess this can be a limitation... i was also trying to find a way for the application to look for a folder on the host but i realize that when the application is ran at the client machine, it executes as if the client machine is its host. unlike when creating web applications thru ASP.Net... realizing this, i guess it is impossible to to add them in deployment without referencing them in the project. thanks. - Marked As Answer byRobinDotNetMVP, ModeratorMonday, April 13, 2009 4:27 AM
-
| | extreme-paranoia Saturday, April 11, 2009 1:12 PM |
|