{"id":11472,"date":"2026-04-19T17:05:48","date_gmt":"2026-04-19T22:05:48","guid":{"rendered":"https:\/\/infiniteuploads.com\/?post_type=docs&#038;p=11472"},"modified":"2026-04-19T20:48:06","modified_gmt":"2026-04-20T01:48:06","password":"","slug":"selling-large-software-downloads-zip-rar-exe-msi-with-woocommerce","status":"publish","type":"docs","link":"https:\/\/infiniteuploads.com\/docs\/compatibility-integrations\/selling-large-software-downloads-zip-rar-exe-msi-with-woocommerce\/","title":{"rendered":"Selling Large Software Downloads (ZIP, RAR, EXE, MSI) with WooCommerce"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p>Yes, Infinite Uploads can host and deliver large software downloads through WooCommerce, including ZIP, RAR, EXE, and MSI files. There are two sides to this: getting large files into WordPress in the first place, and then delivering them securely to paying customers. Big File Uploads handles the first half, Infinite Uploads handles the second, and WordPress itself controls which file extensions are allowed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-this-covers\">What this covers<\/h2>\n\n\n\n<p>If you sell software, games, design assets, or any other large digital product on WooCommerce, you typically hit three walls:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Server upload size limits that block large source files from reaching your site<\/li>\n\n\n\n<li>File type restrictions that block executables and archives from being uploaded to WordPress<\/li>\n\n\n\n<li>Hosting bandwidth and storage overages when customers download large files directly from your server<\/li>\n<\/ul>\n\n\n\n<p>Infinite Uploads and Big File Uploads work together to solve all three.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"delivering-large-files-to-paying-customers\">Delivering large files to paying customers<\/h2>\n\n\n\n<p>Infinite Uploads offloads your digital download files to cloud storage and serves them through a global CDN. Once a file is offloaded, customers never download directly from your web server. This protects your hosting bandwidth and gives customers a fast, reliable download even on multi-gigabyte files.<\/p>\n\n\n\n<p>Infinite Uploads supports both of WooCommerce&rsquo;s protected download methods:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Force Downloads (PHP): <\/strong>WooCommerce pipes the file through PHP so the true cloud URL is never exposed to the customer.<\/li>\n\n\n\n<li><strong>X-Accel-Redirect \/ X-Sendfile (nginx\/Apache): <\/strong>The web server hands off delivery directly, which is faster and lighter on PHP. Requires the module to be enabled by your host.<\/li>\n<\/ul>\n\n\n\n<p>Both methods keep the download link tokenized through WooCommerce, so customers can&rsquo;t share the cloud URL and bypass your store. &ldquo;Redirect only&rdquo; is also supported but is not recommended because it exposes the direct file URL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"getting-large-source-files-into-wordpress\">Getting large source files into WordPress<\/h2>\n\n\n\n<p>WordPress inherits your host&rsquo;s PHP upload limits, which are usually 32 MB to 256 MB. A 4 GB installer will fail long before it reaches the Media Library, regardless of your internet connection.<\/p>\n\n\n\n<p>Install the free <a href=\"https:\/\/wordpress.org\/plugins\/tuxedo-big-file-uploads\/\">Big File Uploads<\/a> plugin alongside Infinite Uploads. Big File Uploads raises the maximum upload size to whatever you set, and chunks large files into smaller pieces so they survive server timeouts. Uploads also resume from where they left off if a chunk fails.<\/p>\n\n\n\n<p>Once the file lands in the Media Library, Infinite Uploads offloads it to the cloud on the normal upload hook. You don&rsquo;t need to do anything extra to connect the two.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"allowing-exe-msi-and-other-software-file-types-in-wordpress\">Allowing EXE, MSI, and other software file types in WordPress<\/h2>\n\n\n\n<p>WordPress restricts uploads to a pre-approved list of file extensions for security reasons. Infinite Uploads doesn&rsquo;t override that list. It stores and delivers whatever WordPress lets you upload. If WordPress blocks the file type, nothing can offload.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"allowed-by-default\">Allowed by default<\/h3>\n\n\n\n<p>These extensions work without any extra configuration:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ZIP (.zip)<\/li>\n\n\n\n<li>RAR (.rar)<\/li>\n\n\n\n<li>7z (.7z)<\/li>\n\n\n\n<li>TAR \/ GZ (.tar, .gz)<\/li>\n\n\n\n<li>PDF, DOC, DOCX, and other standard document formats<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"blocked-by-default-need-to-be-enabled-\">Blocked by default (need to be enabled)<\/h3>\n\n\n\n<p>These are the ones that usually trip up software sellers. WordPress treats them as potentially dangerous because they can execute code on a visitor&rsquo;s machine:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>EXE (.exe) &ndash; Windows executables<\/li>\n\n\n\n<li>MSI (.msi) &ndash; Windows installer packages<\/li>\n\n\n\n<li>DMG (.dmg) &ndash; macOS disk images<\/li>\n\n\n\n<li>APK (.apk) &ndash; Android packages<\/li>\n\n\n\n<li>DEB, RPM &ndash; Linux packages<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"enabling-extra-file-types\">Enabling extra file types<\/h3>\n\n\n\n<p>The simplest option is a free plugin like <a href=\"https:\/\/wordpress.org\/plugins\/file-upload-types\/\">File Upload Types by WPForms<\/a> or <a href=\"https:\/\/wordpress.org\/plugins\/wp-add-mime-types\/\">WP Add Mime Types<\/a>. Both let you tick the file types you need from a preset list and save.<\/p>\n\n\n\n<p>If you prefer code, add this to a functions file or a small mu-plugin. Adjust for the extensions you actually sell:<\/p>\n\n\n\n<div class=\"betterdocs-code-snippet-wrapper theme-light betterdocs-code-snippet-8953f27a\" id=\"betterdocs-code-snippet-8953f27a\" data-language=\"php\" data-copy-button=\"true\">\n\n            <div class=\"betterdocs-code-snippet-header betterdocs-file-preview-header\">\n        <div class=\"betterdocs-file-preview-left\">\n                            <div class=\"betterdocs-traffic-lights\">\n                    <span class=\"traffic-light traffic-light-red\"><\/span>\n                    <span class=\"traffic-light traffic-light-yellow\"><\/span>\n                    <span class=\"traffic-light traffic-light-green\"><\/span>\n                <\/div>\n            \n            <div class=\"betterdocs-file-info\">\n                \n                            <\/div>\n        <\/div>\n\n        <div class=\"betterdocs-file-preview-right\">\n                            <div class=\"betterdocs-code-snippet-copy-container\">\n                    <button class=\"betterdocs-code-snippet-copy-button\" type=\"button\" data-clipboard-target=\"#betterdocs-code-snippet-8953f27a .betterdocs-code-snippet-code code\" aria-label=\"Copy code to clipboard\">\n                        <svg width=\"16\" height=\"16\" viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z\" fill=\"currentColor\"><\/path>\n                        <\/svg>\n                    <\/button>\n                                    <\/div>\n                    <\/div>\n        <\/div>\n    \n    <div class=\"betterdocs-code-snippet-content\">\n        \n        <pre class=\"betterdocs-code-snippet-code language-php\"><code>add_filter( 'upload_mimes', function( $mimes ) {\n    $mimes['exe'] = 'application\/x-msdownload';\n    $mimes['msi'] = 'application\/x-msi';\n    $mimes['dmg'] = 'application\/x-apple-diskimage';\n    return $mimes;\n} );\n<\/code><\/pre>\n    <\/div>\n<\/div>\n\n<script type=\"text\/javascript\">\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ Initialize copy functionality for this specific snippet\n    const snippet = document.getElementById('betterdocs-code-snippet-8953f27a');\n    if (snippet && window.BetterDocsCodeSnippet) {\n        window.BetterDocsCodeSnippet.initCopyButton(snippet);\n    }\n});\n<\/script>\n\n\n\n<p>Only allow the file types you actually sell. Allowing executables on a site that accepts uploads from untrusted users can be a serious security risk.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"woocommerce-setup\">WooCommerce setup<\/h2>\n\n\n\n<p>Once the plugins are installed and file types are allowed, the WooCommerce workflow is the standard one:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to WooCommerce &gt; Settings &gt; Products &gt; Downloadable products.<\/li>\n\n\n\n<li>Set File Download Method to Force Downloads or X-Accel-Redirect\/X-Sendfile.<\/li>\n\n\n\n<li>Leave &ldquo;Append a unique string to filename for security&rdquo; enabled.<\/li>\n\n\n\n<li>Create or edit a product, tick Virtual and Downloadable.<\/li>\n\n\n\n<li>Upload your installer through the standard WooCommerce file selector. Big File Uploads handles the chunked upload; Infinite Uploads offloads it to the cloud afterward.<\/li>\n\n\n\n<li>Save the product. Customers who purchase get a tokenized download link that streams the file from Infinite Uploads CDN.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quick-reference\">Quick reference<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Challenge<\/strong><\/td><td><strong>Solution<\/strong><\/td><td><strong>Plugin<\/strong><\/td><\/tr><\/thead><tbody><tr><td>File too large to upload<\/td><td>Chunked uploads, no server size limit<\/td><td>Big File Uploads<\/td><\/tr><tr><td>Downloads eating hosting bandwidth<\/td><td>Cloud storage + CDN delivery<\/td><td>Infinite Uploads<\/td><\/tr><tr><td>Protecting paid downloads<\/td><td>Force Downloads or X-Accel-Redirect<\/td><td>WooCommerce + Infinite Uploads<\/td><\/tr><tr><td>EXE\/MSI blocked by WordPress<\/td><td>Add the MIME type to the allowlist<\/td><td>File Upload Types (or code)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"common-questions\">Common questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"does-infinite-uploads-work-with-easy-digital-downloads-\">Does Infinite Uploads work with Easy Digital Downloads?<\/h3>\n\n\n\n<p>Yes. The same cloud storage and CDN delivery model applies. EDD&rsquo;s own download protection sits on top.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"is-there-a-file-size-cap-\">Is there a file size cap?<\/h3>\n\n\n\n<p>No. Infinite Uploads bills on storage and bandwidth used, not per file. Multi-GB software installers work the same as a 2 MB image once Big File Uploads gets them into WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"will-customers-see-the-cloud-url-\">Will customers see the cloud URL?<\/h3>\n\n\n\n<p>Not when you use Force Downloads or X-Accel-Redirect\/X-Sendfile. WooCommerce serves a tokenized URL on your domain and the true cloud URL stays hidden. Only &ldquo;Redirect only&rdquo; exposes the direct link, which is why it&rsquo;s not recommended for paid products.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"can-i-require-login-for-downloads-\">Can I require login for downloads?<\/h3>\n\n\n\n<p>That&rsquo;s a WooCommerce setting, not an Infinite Uploads one. Enable &ldquo;Downloads require login&rdquo; under WooCommerce &gt; Settings &gt; Products &gt; Downloadable products. Infinite Uploads respects whatever access rules WooCommerce enforces.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-if-my-host-blocks-exe-files-at-the-server-level-\">What if my host blocks EXE files at the server level?<\/h3>\n\n\n\n<p>Some managed hosts strip executables with a security filter even after WordPress allows them. If uploads fail silently after you&rsquo;ve allowlisted the MIME type, contact your host and confirm they&rsquo;re not blocking the extension.<\/p>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Yes, Infinite Uploads can host and deliver large software downloads through WooCommerce, including ZIP, RAR, EXE, and MSI files. There are two sides to this: getting large files into WordPress in the first place, and then delivering them securely to paying customers. Big File Uploads handles the first half, Infinite Uploads handles the second, and [&hellip;]<\/p>\n","protected":false},"author":3787,"featured_media":11473,"template":"","meta":{"_acf_changed":false,"wds_primary_doc_category":0,"wds_primary_doc_tag":0,"footnotes":""},"doc_category":[166],"doc_tag":[],"class_list":["post-11472","docs","type-docs","status-publish","has-post-thumbnail","hentry","doc_category-compatibility-integrations"],"acf":[],"year_month":"2026-04","word_count":951,"total_views":"13","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"name":"Blake Whittle","author_nicename":"blakew","author_url":"https:\/\/infiniteuploads.com\/blog\/author\/blakew\/"},"doc_category_info":[{"term_name":"Compatibility &amp; Integrations","term_url":"https:\/\/infiniteuploads.com\/docs-category\/compatibility-integrations\/"}],"doc_tag_info":[],"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/docs\/11472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/users\/3787"}],"version-history":[{"count":0,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/docs\/11472\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/media\/11473"}],"wp:attachment":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/media?parent=11472"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/doc_category?post=11472"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/doc_tag?post=11472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}