I publish Windows Forms application using ClickOnce. The installation is quite big considering the overall size of this app. It's something over 15 MB. If I compress locally built application it is squeezed to 2.5 MB.
Can ClickOnce deployment be compressed somehow?
If not, is anyone using IIS compression to speed up transfers? Would that help?
To disable ClickOnce security settingsClick the Security tab. Clear the Enable ClickOnce Security Settings check box. Your application will be run with the full trust security settings; any settings on the Security page will be ignored.
Platform: WPF Category: ClickOnce. ClickOnce allows you to deploy windows based applications to a client system using the web or file server. The application files are placed on the web or FTP site or local share and the user is provided with a link in case of web and FTP deployment.
As far as I know, you can't really manually compress your assemblies. However, you absolutely can use IIS compression. From my testing with a bandwidth monitor, it makes a significant difference. And once it's set up, you never have to think about it, it just happens automatically.
I'm surprised this isn't talked about more often. When I wanted to do this a few years ago I could find very little information about it. However, this article should detail all the changes you need to make if you're running IIS 6.0. I'm not sure how much different those instructions will be for later versions of IIS.
ClickOnce does not have any built-in compression support. But you can use HTTP-compression at the web-server level.
Follow these steps to enable compression under IIS7:
%windir%\system32\inetsrv\config\applicationHost.config (see my comments, other lines are default)
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<!--HERE! deploy files-->
<add mimeType="application/octet-stream" enabled="true" />
<!--HERE! application files-->
<add mimeType="application/x-ms-application" enabled="true" />
<!--HERE! manifest files-->
<add mimeType="application/x-ms-manifest" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
Still not working?? Add this to the same file (by default IIS 7.0 does not compress files unless they are "frequently requested")
<serverRuntime frequentHitTimePeriod="00:00:59" />
Those instructions are the same for later version of IIS. This compression works pretty fast (it is done in the background and only once until file will be changed)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With