Why is it not recommended to run a .exe file directly from a .zip file?

I thought that I could ZIP up a .exe file for portable use. But Windows says it won't work because it might depend on other files in the compressed folder.

Windows warning message

What does this mean? Why can't I just run the program from the zip file? The application could use a relative path instead of a direct path to access other files.

7

3 Answers

Executable files (.exe) can rely on other files for proper execution. For example, they might need a dynamically linked library (.dll) to run external code, a text file (.ini, .txt, etc) for configuration, or a database file for - well, data.

When running an executable from within a an archive, like a .zip file, those files might not get extracted and the program will not work as intended. Alternatively, the program might run and create those files in a different location. If you then moved that archive to another computer, those files will not be there.

If you are 100% positive that running the program from within the archive will not cause any issues, then you can safely ignore the message.

9

Although modern Windows makes ZIP files look like folders, this is only skin deep. A program can't do something like open('c:\foo.zip\bar.txt','rb').

So when you double click on a file in a ZIP file, Windows extracts the file to a temporary directory, then opens the temporary file.

This is problematic in a couple of ways. Firstly, if the temporary file is modified then modifications won't find their way back into the ZIP file. IIRC, Windows mitigates this by marking the temporary file as read-only. Secondly, if the file depends on other files being available in the correct relative locations, they won't be found.

Many executables depend on support files, so MS added the warning with an option to either extract just the executable file, or to extract everything in the ZIP file.

Neither is really suitable for many "portable applications" though, because of the issue that there is no way for modifications to the programs data files to find their way back into the ZIP file.

There are many reasons why running an .exe from a zip could cause problems.

Firstly as mentioned, when you "run" the file, it is actually extracted to a temporary location, then executed.

Immediate issues mean, any files that might have also be Zipped with the EXE will likely not have been extracted, and therefore not accessible. This may include libraries required to run the .exe, config files, even things as simple as help files.

Also even if you did zip everything "you thought" the file needed (into the zip file), and these are some how extracted, modern installations frequently include things like:

Data added to the windows registry library/driver files stored in other locations, as they may be shared with other programs registration of library/driver files

That's just the basics

You then have the other potential added issues, of access/file rights, these may be missing and the program may incorrectly execute as a result.

Then even if you get the program running, most modern apps require the saving of some sort of config data, for future usage. As the app is in a temp location, it will likely be deleted (along with any files it creates), and virtually impossible to find again anyway (yes I know it's not actually impossible, but it's not very manageable). And it's worth noting anything created by the app will likely not find it's way back to the zip.

So unless you have a self-contained app that required no config saving, and is specifically designed to be run as a standalone app, best not to try and run it from a Zip.

If you are trying to make something portable, it's usually a better option to use apps designed to be run from a memory stick or virtual drive.

Hope this helps.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like