Mengapa Windows 7 menginstal aplikasi 64 bit di folder Program Files (x86)? Bisakah saya mengubah perilaku?

12

Saya telah menggunakan versi 64-bit Windows 7 sejak CTP dan telah mengalami beberapa masalah dengan aplikasi yang diinstal di C:\Program Files (x86)folder. Apa tujuan dari memiliki 2 direktori File Program yang terpisah?

Setiap program yang saya instal telah masuk ke C:\Program Files (x86)folder. Tampaknya tidak masalah jika aplikasinya 32 atau 64 bit. Mengapa aplikasi 64-bit tidak ditempatkan C:\Program Files?

Apakah ada cara untuk mengubah default menjadi C:\Program Files? Apakah akan mengacaukan segalanya jika saya hanya memasukkan semuanya ke dalam C:\Program Files?

Jika memang ada manfaat memiliki folder terpisah untuk aplikasi 64 bit, sepertinya default yang lebih masuk akal akan digunakan C:\Program Filesuntuk aplikasi x86 dan membuat C:\Program Files (x64)folder baru untuk aplikasi 64-bit yang baru. Ini akan membantu menjaga kompatibilitas ke belakang. Saya bekerja sebagai pengembang perangkat lunak dan beberapa proyek saya berisi referensi jalur ke perpustakaan di bawah C:\Program Files. Sekarang referensi tersebut rusak pada mesin Windows 7 yang telah menempatkannya C:\Program Files (x86). Saya bahkan mencoba mengubah lokasi target menjadi installer C:\Program Files, tetapi itu diabaikan dan aplikasi C:\Program Files (x86)tetap masuk .

Ini sangat menyebalkan karena saya perlu berbagi kode sumber antara mesin 32 dan 64 bit dan saya tidak ingin harus mengacaukan dengan beberapa file konfigurasi yang menetapkan jalur ke pustaka ini secara berbeda pada mesin yang berbeda.

Edit terkait variabel lingkungan: (Menggunakan hanya nilai-nilai variabel standar bahasa Inggris untuk kesederhanaan.) Pada mesin 64-bit %ProgramFiles%akan C:\Program Filessementara variabel baru %ProgramFiles(x86)%akan C:\Program Files (x86). Jadi, jika Anda memiliki program 32-bit yang perlu menemukan jalur folder tempat ia akan diinstal, ia perlu memeriksa untuk melihat apakah program itu berjalan pada Windows versi 32-bit atau 64-bit agar untuk mengetahui variabel lingkungan mana yang digunakan. Aplikasi 32-bit apa pun yang ditulis tanpa pertimbangan ini perlu diperbarui agar berfungsi dengan benar pada mesin 64-bit. Jadi, bahkan menggunakan variabel lingkungan, kompatibilitas mundur rusak.

Juga, %ProgramFiles(x86)%tidak ada pada Windows versi 32-bit. Jika ya, maka aplikasi 32-bit hanya dapat selalu menggunakan variabel lingkungan itu dan tidak akan memerlukan logika kondisional berdasarkan OS yang mereka jalankan.

CoderDennis
sumber
6
Apakah Anda yakin aplikasi ini memang 64-bit? Dalam kebanyakan kasus, Anda akan menemukan program yang hanya kompatibel 64-bit, tetapi sebenarnya adalah aplikasi 32-bit.
John T
Saya ingin tahu apakah menggunakan %ProgramFiles%variabel lingkungan akan menyelesaikan ini. Tidak yakin bagaimana ia menangani perbedaan x86 / 64bit.
ceejayoz

Jawaban:

7

Alasannya adalah karena banyak penginstal lama yang tidak memahami struktur file baru dan mem-plonk segala sesuatu dalam direktori file program standar atau Anda sedang melihat program pintar yang memiliki beberapa komponen 32-bit yang sedang disalin di sana.

Taruhan terbaik Anda adalah mengunduh program baru - seperti x64 Winrar dan lihat saja di mana ia diinstal hanya untuk mengesampingkan masalah dengan mesin Anda.

Adapun mengacaukan hal-hal - itu bisa, tetapi itu benar-benar tergantung pada programnya, tidak ada satu jawaban yang cocok untuk semua ... beberapa program yang lebih kecil dan ringkas dengan hanya beberapa file seharusnya tidak memiliki masalah, sedangkan, jika Anda berbicara tentang Office , Adobe atau "suite" atau program besar lainnya, kemungkinan besar akan gagal karena mereka memiliki banyak komponen bersama yang lintas arsitektur.

William Hilsum
sumber
Jadi, mengapa Microsoft tidak membuat "C: \ Program Files" lokasi untuk aplikasi 32-bit sehingga installer lama itu tidak akan menimbulkan masalah. Juga, saya tidak begitu mengerti mengapa perlu ada pemisahan. Mengapa mereka semua tidak masuk saja ke "C: \ Program Files"?
CoderDennis
Alasan keduanya tidak bisa karena beberapa aplikasi (terutama yang memiliki komponen bersama) memiliki file dengan nama yang sama pada 32-bit sebagai 64-bit. Adapun mengapa begini - saya tidak tahu, seseorang mungkin punya alasan yang sangat bagus pada saat itu dan itu hanya terjebak sebagai "hal yang harus dilakukan".
William Hilsum
4

Jika Anda menggunakan apa pun selain %ProgramFiles%(atau CSIDL_PROGRAM_FILES, atau di bawah. NET Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)) Anda tetap berada dalam masalah, karena instalasi khusus dapat menginstal program di bawah volume lain (D: misalnya) dan instalasi internasional sering memiliki folder lain secara default.

  • Windows Spanyol: C:\Archivos de Programa,
  • Windows Prancis: C:\Programmes,
  • Jerman Windows: C:\Programme,
  • Windows Swedia: C:\Program

dll.

Zano
sumber
Saya tidak menyebutkan variabel lingkungan dalam pertanyaan awal saya agar tetap sederhana. Saya baru saja menambahkan suntingan yang menunjukkan bagaimana menggunakan %ProgramFiles%persis apa yang menyebabkan masalah.
CoderDennis
3

Harap dicatat bahwa di bawah versi 64-bit Windows 7 (ini juga berlaku untuk versi OS yang lebih baru juga, tetapi saya hanya dapat mengkonfirmasi ini untuk Win 7 64-bit) ada perbedaan antara lokasi yang jelas dari% ProgramFiles% Anda di penjelajah dan di DOS.

Di bawah windows 7 lokasi folder fisik aktual dari% ProgramFiles% (dan% ProgramFiles% terkait (x86)% variabel environmentemnt) ditetapkan sesuai versi bahasa Inggris ; yaitu "C: \ Program Files" dan "C: \ Program Files (x86)" respectivley, tetapi ditampilkan dalam eksploer yang dilokalkan sesuai keperluan .

Untuk memberikan contoh spesifik; pada Swedia Windows 7 64-bit instal, jika Anda membuka Explorer dan lihat di drive sistem (biasanya C :) Anda melihat folder " Program " dan " Program (x86) ". Mengetik% ProgramFiles% ke bilah alamat menggerakkan Anda ke "C: \ Program".

Namun jika Anda membuka kotak DOS dan mengetik SET Anda akan melihat bahwa nilai aktual dari% ProgramFiles% adalah "C: \ Program Files" bukan eksploer folder "C: \ Program" yang menunjukkan kepada Anda. Menjelajahi lebih lanjut dengan CD dan DIR yang dapat Anda lihat secara fisik adalah "C: \ Program Files"

Moralnya adalah jika Anda menggunakan lingkungan varaibles atau program melalui API, semuanya akan tetap berfungsi, tetapi waspadai perubahan halus ini saat menjelajahi sistem file!

Pete Stensønes
sumber
Dalam versi Polandia "Program Files (x86)" adalah "Pliki programów (x86)", sedangkan "Program Files" adalah, well ... "Program Files". Bahasa Polandia memiliki tata bahasa yang aneh. Juga, tolong jangan menyebutnya kotak DOS. Tidak ada DOS di sana.
kinokijuf