我主要在有/ usr/bin和/ bin目錄的Linux上開發。我知道除了C:\ Windows和C:\ Windows \ System32之外,Windows沒有任何其他任何實際的等價物。許多命令行程序,我移植到Windows,我只是寫一個安裝程序,將它們複製到C:\ Windows,因爲我不想設置一個PATH變量。我知道正確的方法是設置一個PATH變量,但對我來說C:\ Windows是==到/ usr/bin。 Windows程序員需要考慮什麼?這是一個好習慣,是否有真正的缺點,我應該實際安裝到程序文件,並通過註冊表設置一個路徑變量?Windows程序員,安裝到C: Windows是否是一種好習慣?
回答
安裝到Program Files(甚至用戶的AppData文件夾以進行用戶特定的安裝),並提供選件將目錄添加到%PATH%
。
安裝到Program Files文件有許多優點:
- 不會碰巧在C任何其他文件衝突:\ Windows下
- 不會在已覆蓋其他一些工具上用戶的PATH
- 使你的程序的成分更明顯,而不是文件在C隨機散射:\ Windows下
- 避免了依賴衝突(DLL地獄),如果你需要包括你自己的DLL
如果用戶選擇添加到%PATH%
,如果它們遇到與您的應用程序發生某種其他衝突(對於Program Files而言很少可能,但仍有可能),則可跳過該步驟。如果您安裝到C:\ Windows中,則無法避免此類衝突。
另一件有用的功能是爲用戶提供在快捷菜單中添加一個快捷方式的選項,該快捷方式打開一個命令窗口,右邊的條目添加到PATH中。 (使快捷方式運行一個可執行文件,在您自己的環境中將應用程序目錄添加到PATH中,然後運行'cmd.exe'。) –
是的,MSVC的命令行工具的開始菜單項是這樣做的,這非常有用。 – nneonneo
您應該將應用程序安裝到適當的Program Files目錄中;但也有例外。在Windows上有許多路徑已經設置了Environment Variables,其中%PROGRAMFILES%
就是其中之一(%PROGRAMFILES(X86)%
是另一個,因此是'合適'路徑)。
如果你能舉出一些例外的例子,會是一個更好的答案。 – nneonneo
- 1. 總是等待任務完成是否是一種好習慣?
- 2. 抑制警告是否是一種好習慣?
- 3. 從實用程序方法返回PreparedStatement是否是一種好習慣?
- 4. 繼承UIViewController的子類是否是一種好習慣?
- 5. 從函數中打印bool值是否是一種好習慣?
- 6. 在我的AppDelegate中保留一個CLLocationManager是否是一種好習慣?
- 7. 編寫Scala代碼時忽略點和括號是否是一種好習慣?
- 8. PHP程序員的好習慣/項目
- 9. 在onDraw()中調用invalidate()是否是一種很好的編程習慣?
- 10. 將主參數存儲到全局變量是否是一種好習慣?
- 11. 重寫ServletContextListener的實現是否是一個好習慣?
- 12. 是否將代碼封裝成閉包是個好習慣?
- 13. 什麼是一些好的Windows安裝程序?
- 14. 在WPF(MVVM)中建立Model是否是一個好習慣?
- 15. Windows安裝程序XML是否支持CE安裝文件?
- 16. 在ThreadPoolExecutor中設置allowCoreThreadTimeOut()是否是一個好習慣?
- 17. 在使用Autocomplete/Select2時進行WCF調用是否是一種好習慣?
- 18. 擴展NSError是否是一個好習慣
- 19. ClickOnce是一個很好的隱藏安裝的WIndows安裝程序?
- 20. 爲CQRS實現打包Masstransit是否是一個好習慣?
- 21. 爲句柄寫一個getter是否是一個好習慣?
- 22. 從c中的函數返回指針是否是好習慣?
- 23. 在數組中存儲數組或對象是否是一種好習慣?
- 24. 在ajax回調之後調用ajax是否是一種好習慣?
- 25. 允許非必填字段接受NULL值是否是一種好習慣? Mysql
- 26. 在另一個線程中使用線程是否是一個好習慣?
- 27. 使用active_model_serializer和Jbuilder是否是一個好習慣?
- 28. 延長zf2控制器兩次是否是一個好習慣?
- 29. 這是一個很好的習慣嗎?
- 30. 總是在C中轉換變量是否是一個好習慣?
我也一直在想這個。 –
我覺得'c:\ windows' =='/ sbin'是一個比較接近的比喻。 –