2008-09-11 30 views
16

Tôi sắp xây dựng một ứng dụng sắp nhắm mục tiêu Windows, Mac và Linux. Tôi đang tự hỏi tôi nên giữ dữ liệu ứng dụng ở đâu như cài đặt, vv ..Ứng dụng đa nền tảng nên giữ dữ liệu của họ ở đâu?

Thư mục cài đặt của ứng dụng là lựa chọn dễ dàng nhất, nhưng tôi nghĩ đó có thể là vấn đề với mô hình bảo mật Vista mới. Bên cạnh đó, người dùng có thể muốn cài đặt khác nhau.

Có phải C: \ Documents and Settings \ username \ MyApp tốt cho cả Vista và XP? Có phải /home/username/.MyApp tốt cho Linux và Mac không?

Bất kỳ ý tưởng và/hoặc liên kết nào để thực tiễn tốt nhất được đánh giá cao.

Cảm ơn!

Juan

+0

Câu trả lời của Kristopher là đúng về mặt kỹ thuật nhưng fwiw, thư mục ~ trên máy Mac là/Người dùng không/Trang chủ – username

Trả lời

12

Mỗi nền tảng có API riêng để tìm thư mục nhà của người dùng hoặc thư mục tài liệu hoặc thư mục tùy chọn.

  • Windows: SHGetFolderPath() hoặc SHGetKnownFolderPath()
  • Mac OS X và iPhone OS: NSSearchPathForDirectoriesInDomains()
  • Unix: $ HOME biến môi trường

Đừng hardcode đường dẫn cụ thể hoặc chỉ cần tack một tiền tố và hậu tố trên tên của người dùng. Ngoài ra, hãy thử làm theo bất kỳ quy ước nào có cho nền tảng để đặt tên cho các tệp.

2

Tôi không :)

Tôi đang sử dụng USERPROFILE trong Windows và HOME trong Mac/Linux. Nhưng dù vậy, tôi cần phải biết rằng đó là những nơi phù hợp.

Cảm ơn!

2

Trong cửa sổ, bạn cần phải đi sâu hơn một cấp so với hồ sơ người dùng. Sử dụng thư mục Dữ liệu ứng dụng.

1

Không bao giờ, lưu trữ dữ liệu người dùng trong thư mục ứng dụng. Nó chỉ là một ý tưởng tồi.

Hầu hết các hệ điều hành đều có biến môi trường $ HOME (hoặc% HOME%). Đó sẽ là nơi đầu tiên để xem xét.

Nếu bạn muốn hỗ trợ sạch sẽ nhiều hệ điều hành, tuy nhiên, bạn sẽ phải có một số mã dành riêng cho từng hệ điều hành để tìm ra chính xác những nơi cần thực hiện. (~/Thư viện dành cho Mac OS, ~/.config cho các hệ thống dựa trên GNOME,% HOME%/Dữ liệu ứng dụng cho Windows, v.v.).

2

Trên Windows tôi sử dụng APPDATA và trên Linux tôi sử dụng TRANG CHỦ.

5

Liên quan đến thực hành tốt nhất, Jeff đã đăng một bài viết về ô nhiễm không gian sử dụng mà bạn có thể tìm thấy hữu ích: Don't Pollute User Space

+0

Liên kết rất đẹp, cảm ơn. Điều thú vị là tôi đã đăng ký vào blog của Jeff, tôi chỉ không nhớ bài đăng đó. Cảm ơn một lần nữa! Liên kết –

+2

bị hỏng:/(đoán Jeff không đọc [Các URI tuyệt vời không thay đổi] (http://www.w3.org/Provider/Style/URI.html)) –

4

Là một điểm chung, tôi khuyên bạn nên trừu tượng hóa việc thực hiện các thiết lập của bạn thành một 'Provider Cài đặt' và cung cấp các nhà cung cấp khác nhau cho từng nền tảng. Bằng cách đó, bạn có thể thực hiện việc lưu trữ các thiết lập theo cách phù hợp nhất với các nền tảng đích (ví dụ, một tệp trên Linux hoặc Windows Registry).

Đừng đơn giản chấp nhận 'mẫu số chung thấp nhất'.Trường hợp bạn có nội dung phải được giải thích được lưu trữ trong các tệp, hãy yêu cầu nhà cung cấp cài đặt của bạn hiển thị vị trí nền tảng cụ thể cho các tệp đó.

1

ngôn ngữ gì bạn đang có kế hoạch sử dụng không? Java, ví dụ, có Preference API chuyên dụng.

Các vấn đề liên quan