Apakah ada alternatif untuk menambahkan ke variabel lingkungan PATH di Windows?

4

Banyak aplikasi (khususnya alat pengembang) mengharuskan Anda menambahkan path ke variabel lingkungan PATH di Windows. Saya tahu apa yang dilakukan, tetapi bagi saya ini terasa tingkat rendah

Apakah tidak ada alternatif untuk ini dan variabel lingkungan lainnya, menyebabkan efek yang sama pada Windows? Misalnya, bisakah perangkat lunak dikembangkan dengan cara yang berbeda dan mengelolanya dengan teknik lain?

Jonas
sumber

Jawaban:

2

Tidak terlalu.

Tentu saja perangkat lunak dapat dikembangkan untuk menggunakan var lain, tetapi windows harus menggunakannya untuk mencari binari juga.

Anda dapat membuat sendiri skrip untuk hanya memperluas variabel PATH dengan jalur dev-tools Anda saat Anda membutuhkannya, jika tidak hapus lagi.

Di Linux ada perintah sumber yang menggunakan firefox jetpack sdk misalnya, yang menggunakan sub-bash. Tidak tahu apakah windows memiliki sesuatu seperti itu juga. Itu akan menjadi pilihan lain / terbaik.

Kissaki
sumber
Variabel apa pun yang Anda atur di .batfile Windows akan tetap setelah berhenti. Anda dapat mengubah perilaku ini jika Anda tidak ingin itu terjadi dengan setlocaldan endlocal, meskipun.
Ben Richards
Ini akan tetap ada di dalam sesi cmd.exe, tetapi tidak sesi windows atau sesi pengguna windows. Jika Anda membuka prompt perintah baru itu tidak akan memiliki set variabel yang Anda atur di prompt perintah pertama.
Kissaki
5

App Pathspengaturan registri dapat digunakan untuk mendaftarkan aplikasi yang dapat dieksekusi di seluruh sistem atau untuk pengguna individu seperti menambahkan direktori aplikasi ke PATH. Jadi aplikasi dapat dimulai dengan menulis hanya nama yang dapat dieksekusi di baris perintah.
Untuk detail lebih lanjut tentang App Pathsmemeriksa artikel ini http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121.aspx atau kunci registriHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Mike
sumber
5
Catatan yang App Pathsdigunakan oleh ShellExecute()fungsi, tetapi tidak oleh CreateProcess()fungsi, oleh karena itu beberapa aplikasi yang memulai program lain mungkin tidak dapat menemukan executable yang terdaftar hanya di App Paths.
Sergey Vlasov
Dan karena App Pathstidak berfungsi CreateProcess(), itu berarti bahwa mereka tidak akan bekerja dari command prompt, atau powershell prompt. Tetapi itu berarti Anda dapat menggunakan startperintah, yang memang digunakan ShellExecute. >start notepad++ readme.txt
Ian Boyd
1

Setiap aplikasi dapat dibuat portabel ketika sedang dikembangkan. Tidak perlu menggunakan variabel PATH.

Tekniknya adalah untuk mendapatkan jalur peluncuran aplikasi dan menggunakannya untuk meluncurkan modul aplikasi lain secara relatif ke jalur peluncuran ini. jalur pencarian dll sudah termasuk jalur aplikasi jadi ini berlaku untuk executable lain atau modul / data yang menyusun aplikasi.

snayob
sumber
Saya tidak dapat melihat bagaimana ini akan membantu jika menjalankan program.exedari Command Prompt. Jika program.exemerupakan bagian dari aplikasi protable yang dipasang di beberapa folder acak , dan tidak termasuk dalam Path, itu tidak akan ditemukan.
Kevin Fegan
Pada prompt perintah Anda menggunakan ". \ Program.exe". "." singkatan folder saat ini. Ada ".." untuk folder induk. "Pintasan" ini berfungsi pada Windows, Unix / Linux dan saya pikir pada semua OS.
snayob
0

Satu-satunya solusi lain adalah dengan meletakkan semua file dalam direktori yang sama dengan yang dapat dieksekusi, sehingga jalur tidak diperlukan untuk mengakses file. Atau tentukan pintasan untuk dieksekusi dengan nama jalur default.

Solusi ini digunakan oleh banyak aplikasi, untuk alasan ini: hindari menambahkan diri ke PATH.

harrymc
sumber
0

dapatkah perangkat lunak dikembangkan dengan cara yang berbeda dan mengelolanya dengan teknik lain?

Iya. Apa yang akan saya lakukan dalam kasus ini, (jika Anda memiliki program untuk menginstal atau yang lainnya, tetapi Anda tidak dapat mengakses variabel Path) hanya membuatnya sehingga biner (program yang dapat dieksekusi) diinstal ke dalam folder C:\Windowsatau C:\Windows\System32. Kemudian Anda akan bisa menyebutnya dari baris perintah atau pemrograman, dengan hanya program, program /optionatau program -o, atau apa pun itu.

Ini benar-benar akan optimal untuk menambahkannya ke %Path%variabel sistem, dan jika menargetkan Windows Vista, 7, atau 8, Anda dapat meminta pengguna untuk meningkatkan hak istimewa dan mengizinkannya untuk mengaksesnya. Tetapi jika itu entah bagaimana bukan pilihan, maka Anda setidaknya harus dapat melakukan apa yang saya katakan di atas.

RyanayR
sumber
-2

Itu akan menjadi "Tingkat rendah", jika Anda menerapkan LD_PRELOAD dengan mengaitkan beberapa panggilan FileOpen (), bukan dengan menempatkan .dll ke folder program. Beberapa implementasi aufs / unionfs mungkin menjadi solusi lain.

kagali-san
sumber