Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can ClickOnce deployed application setup be compressed?

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?

like image 763
David Vidmar Avatar asked Feb 05 '09 10:02

David Vidmar


People also ask

How do I stop ClickOnce application?

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.

What is ClickOnce publish?

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.


3 Answers

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.

like image 109
codeConcussion Avatar answered Sep 29 '22 19:09

codeConcussion


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" />
like image 40
Alex from Jitbit Avatar answered Sep 29 '22 20:09

Alex from Jitbit


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)

like image 37
Irek Avatar answered Sep 29 '22 18:09

Irek