How to deploy and update ClickOnce applications using MSI?
Thanks,
Adam.
I would think that MSIs would treat the ClickOnce files just like... well... files. If you have a directory on the server that will house the ClickOnce files (*.application, *.manifest, your bits, etc.), then deploy then in the MSI like regular old files. Your client accessing them will then need to know the path to them (UNC or URL) to install the client via ClickOnce.
HTH,
Jason
If I understand correctly, you are building a WebSetup to install a web site that will host the ClickOnce apps. And, you want to be able to get the ClickOnce manifests configured properly for that server.
You can do this, but it is a bit complex. Basically, you will need to write a custom action that your web setup project uses to update the ClickOnce files and do a bunch of configuration stuff. Here are the things your code probably needs to do:
Here's some resources that can help with these steps:
Creating a Custom Action: Passing Data to a Custom Action Walkthrough http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxwlkwalkthroughpassingdatatocustomaction.asp
Properties to use in the WebSetup to Pass to the Custom Action to Know the server URL:
Okay, drat, I can't find this right now, and I can't install a WebSetup on my machine since I don't have IIS on it :-(... so you find the correct property by:
Creating a Boostrapper Package: Bootstrapper Manifest Generator
http://gotdotnet.com/Workspaces/Workspace.aspx?id=ddb4f08c-7d7c-4f44-a009-ea19fc812545
Modifying Mime Types:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=11106&SiteID=1
Like I said, the tools are there to make it possible, but it's not built-in to make this doable. You could enter a suggestion on the MSDN Product Feedback Center.
Good Luck!
Nice post David.
Deploying a ClickOnce application on the server via an MSI package (or any install package) is far too complicated like stated above. In my opinion, signing the manifests and upfront knowledge of the URL are show stopper issues when packaging ClickOnce applications.
Creating a build process and deployment process for ClickOnce applications is very painful. The right click / publish is nice, but useless when it comes to creating a real deployment. On top of that, ClickOnce on the client side doesn't even work correctly when launched from Firefox or if Firefox is the default browser. If the URL does not have to be baked into the deployment manifest and bootstrapper, I believe things would be a lot better.
It's a shame because ClickOnce was so close to being awesome.
Is there a suggested strategy where you don't need the URL up front and take all the drastic steps listed in David's post, like deploying a certificate? I can create an "online only" deployment, and maybe a separate package to install the prerequisites. At the end of the day, that would be right back to where I was with no touch deployment though.
Thanks,
Jon
Hi,
David your post did help us through the server install issues. I posted a little bit of our solution to this issue here:
http://proactivelogic.com/blog/index.php/2006/09/30/packaging-a-clickonce-server-deployment/
http://proactivelogic.com/blog/
A lot of it uses David's advise, with some additional information on tying it all together.
Hope this helps-
Jon