20

I have seen that every executable file in Windows has an extension of .exe. But Mac OS X doesn't have the same.

Windows executes .exe files. Then what kind of files does Mac OS X execute?

What is the difference between both operating system's execution of applications?

Even I found that windows setups has the same extension .exe but on a Mac setups have extension of .dmg

Would you please share your knowledge with me about .dmg & executables on Macs vs. Windows?

phuclv
  • 30,396
  • 15
  • 136
  • 260
sagarkothari
  • 5,085

4 Answers4

24

Extensions don't actually change what type of file something is, although they often do hint to the system what do do with a particular item.

DMGs are not executables, they are disc images. They are files that act as discs, which often contain the executables and other files for applications. When you double-click on one, the system mounts it and you then have access to the files inside.

Both Windows and OS X execute binary executable files, although they are in different formats. The big difference in what a user sees if using the GUI is that on Windows, you usually see the .exe executable file, which resides in a folder that contains other files and information that the program uses. On OS X, all those other files, along with the primary executable, are contained in a "bundle" (really a folder) with the extension .app. Double clicking on a .app bundle will execute the internal executable and load your application.

Outside of the GUI, in the actual file structure, Mac and Windows systems are really quite similar; these differences are mostly a question of how the system presents things to the user for manipulation in the GUI.

phoebus
  • 4,001
6

.dmg files are the disk image files normally used to install Mac apps. Once installed, Mac apps usually have the extension of .app, but that extension is normally hidden from the user. Mac apps are packages which appear to the user as a single file. This makes it very convenient to move apps to a new folder or a new computer.

fwoosh
  • 105
Bob D
  • 508
4

You will also be able to execute any file that has it's permissions set to executable, given that it actually contains a valid program of course.

Fred
  • 136
1

every executable file in Windows has extension of .exe

This is not correct. In DOS there were 2 executable file extensions: *.COM and *.EXE. Windows inherited those so it also supports *.com and *.exe. Note that *.exe is just the "container" that contains various executable formats

If you run a command without an extension Windows will append the extensions in the %pathext% environment variable and search until it find the first file with that name. The default value of the variable is like this

>echo %pathext%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

As you can see there are other executable file types that Windows will run (without an extension), but most of them are scripts and not binary executables

Nevertheless Windows doesn't actually uses the file extension to determine the file format. Any files beginning with MZ (which is the signature for the MZ format) will be treated as an executable file

In summary classic Windows executable can be

But depending on Windows version some of those formats may not be executable

Windows 10 also has the ability to run Linux ELF binaries with the introduction of

Setup files in Windows are also often provided in *.msi files which a format read by Windows Installer, although strictly speaking it's not a executable file

phuclv
  • 30,396
  • 15
  • 136
  • 260