Why Program Files vs Program Files (x86) but no AppData vs AppData (x86)?

0

1

On Windows, depending on the bit-ness of an installed program, it will go to Program Files or Program Files (x86).

Additionally, many installation programs give you the option to install "For all users" to Program Files/Program Files (x86) or "For current user only" to Users/<username>/AppData/<Local|Roaming>. You can make this decision based on privileges or preference.

But there is no convention for organizing user-specific programs by bit-ness. Why is that?

Hau

Posted 2017-10-10T02:48:34.630

Reputation: 111

1Because the use of AppData is transparent to the program as is Program Files vs Program Files x86 (i.e it isn’t necessary) – Ramhound – 2017-10-10T03:28:57.900

@Ramhound If use of AppData vs Program Files vs Program Files (x86) is transparent to the program... then why do we even have Program Files vs Program Files (x86)? – Hau – 2017-10-11T03:49:30.430

Because the WoW64 (Windows 32-bit on Windows 64-bit) subsystem still exists. The program if written the correct will will use AppData for user specific data. A program that follows the design standards set by Microsoft won't know they are accessing a 32-bit or 64-bit registry node. A 32-bit application on a 64-bit OS will not know they are actually running out of Program Files x86, if you were to debug the application, if it follow best practices it would simply be Program Files allowing it to work on both 64-bit and 32-bit systems – Ramhound – 2017-10-11T14:09:34.767

Answers

-1

An application that is not running with raised privileges should does not have access to the Program Files and Program Files (x86) directories. This is good for safety, you know.

Next, once an application doesn’t install in Program Files or Program Files (x86) directory rather than installing into %APPDATA% , it will not face the situation that it needs to load a specific DLL file in a complex folder environment, %APPDATA% is very clear.

In general, the 32-bit version automatically installs to C:\Program Files (x86), and the 64-bit version automatically installs to the C:\Program Files, only few application will be installed in %APPDATA%, to my knowledge, only Chrome installs in %APPDATA%.

In brief, why there is not a AppData(x86) folder, because it is unnecessary.

Origami

Posted 2017-10-10T02:48:34.630

Reputation: 1 309

Could you clarify on: "Next, once an application doesn’t install in Program Files or Program Files (x86) directory rather than installing into %APPDATA% ...". Are you saying the application is installed to Program Files or AppData? – Hau – 2017-10-11T03:53:14.373

What if I want to install the 32-bit version AND the 64-bit version of an application, both to AppData? – Hau – 2017-10-11T04:00:39.130

@Origami - Firefox and Outlook are other examples of programs that use AppData. – Ramhound – 2017-10-11T14:10:17.487

1@Hau - If you are installing a program to AppData then you are violating Microsoft design standards. Applications should be installed in Program Files if they are 64-bit and Program Files x86 if they are 32-bit. If you have a case where you need two different profiles (data files stored in AppData) for the 32-bit and 64-bit version of the application, that is left up to you to design your application to handle. Typically the 32-bit and 64-bit versions of say Outlook and Firefox and Chrome all share the same user profile – Ramhound – 2017-10-11T14:11:46.007

@Ramhound - So, in summary (if we follow Microsoft design standards): 1. Don't install programs to AppData. Install them to Program Files/Program Files (x86), 2. AppData is for data, not binaries, 3. If you don't have admin privileges, don't install programs? – Hau – 2017-10-12T15:02:29.250