Trong thời gian chạy, Firefox sử dụng thư mục cài đặt hoặc hồ sơ, để lưu giữ tất cả các cài đặt dành riêng cho người dùng như dấu trang, lịch sử và tiện ích mở rộng. Trong khi khởi động, Firefox chọn thư mục đó dựa trên một số tiêu chí bao gồm đối số dòng lệnh, biến môi trường và một tập tin liệt kê các cấu hình đã biết và mặc định.
Firefox 67 có mục tiêu là cho phép người dùng sử dụng đồng thời các bản cài đặt khác nhau của Firefox mà không cần định cấu hình đối số dòng lệnh và dừng hành vi sử dụng cấu hình với các phiên bản Firefox cũ hơn họ đã thấy vì hành vi này không được hỗ trợ và được biết là gây ra sự cố rất khó để chẩn đoán và sửa chữa và trong một số trường hợp, nghiêm trọng đến mức khiến Firefox hoàn toàn không thể sử dụng được. Cuối cùng, các thay đổi đã được thực hiện đối với hồ sơ được lựa chọn.
Bài viết này mô tả chi tiết cách lựa chọn cấu hình được sử dụng để hoạt động, cách nó hiện hoạt động trong Firefox 67 và cách chúng tôi di chuyển người dùng từ các phiên bản trước đó.
Mục lục…
Hành vi trước đây
Khi khởi động, Firefox sẽ tải danh sách các cấu hình đã biết từ tập tin profiles.ini nằm tại một vị trí cụ thể trong thư mục chính của người dùng. Nó bao gồm một số cài đặt và danh sách các cấu hình đã biết và vị trí của chúng trên đĩa. Một trong số này sẽ được đánh dấu là hồ sơ mặc định. Mặc định này áp dụng cho bất kỳ phiên bản hoặc cài đặt nào của Firefox mà người dùng chạy.
Firefox sau đó kiểm tra một số biến môi trường và đối số dòng lệnh có thể ghi đè lên cấu hình mặc định. Các chi tiết không được đề cập ở đây vì hành vi đó không thay đổi. Đủ để nói rằng một khi những kiểm tra này được thực hiện, Firefox sẽ chọn một cấu hình để chạy hoặc hoàn toàn không tìm thấy một cấu hình.
Nếu không có hồ sơ nào được tìm thấy và có hồ sơ được liệt kê trong profiles.ini (điều này sẽ chỉ ra một đối số dòng lệnh không hợp lệ hoặc không có cấu hình nào được đánh dấu là mặc định) thì trình quản lý hồ sơ được hiển thị để cho phép người dùng chọn hoặc tạo hồ sơ mới để sử dụng làm mặc định.
Nếu không có hồ sơ nào được tìm thấy và profiles.ini trống thì đây được coi là lần chạy đầu tiên của Firefox và một cấu hình mặc định trống mới được tạo và sử dụng mà không có sự tương tác của người dùng.
Người dùng có thể thay đổi cấu hình mặc định bất kỳ lúc nào thông qua trình quản lý cấu hình, điều này sẽ thay đổi cấu hình mặc định cho tất cả các bộ cài đặt và phiên bản của Firefox.
Firefox phiên bản dành cho nhà phát triển
Một điều phức tạp là Firefox phiên bản dành cho nhà phát triển thường sử dụng cấu hình mặc định khác với các phiên bản Firefox khác. Điều này đạt được bằng cách bỏ qua điểm đánh dấu hồ sơ mặc định bình thường trong profiles.ini và thay vào đó sử dụng hồ sơ có tên “dev-edition-default” làm mặc định. Sự khác biệt này gây ra nhiều lỗi khác nhau và vì vậy chúng tôi mong muốn làm cho phiên bản dành cho nhà phát triển hoạt động giống như các phiên bản khác.
Đa tiến trình
Một chi tiết bổ sung là điều gì sẽ xảy ra khi đã có một phiên bản Firefox đang chạy. Trước khi bắt đầu lựa chọn cấu hình, Firefox cố gắng tìm một phiên bản Firefox hiện có trên hệ thống. Nếu nó tồn tại thì thay vì khởi động, nó sẽ gửi bất kỳ đối số dòng lệnh nào đến phiên bản hiện có và được thực thi ở đó.
Trên Windows chỉ một phiên bản của Firefox có thể chạy tại một thời điểm trừ khi đối số dòng lệnh -no-remote được sử dụng cho các tiến trình bổ sung. Chúng sẽ bắt đầu bất kể phiên bản đang chạy nào khác nhưng bất kỳ lần khởi động Firefox nào trong tương lai cũng sẽ không thể phát hiện ra các trường hợp này và do đó sẽ bắt đầu nếu không tìm thấy phiên bản bình thường nào. Khi nhiều phiên bản đang chạy, mỗi phiên bản phải sử dụng một cấu hình riêng biệt. Hồ sơ sẽ bị khóa để thực thi điều này.
Trên linux nó cũng tương tự nhưng phức tạp hơn một chút. Nếu một đối số dòng lệnh chỉ định một cấu hình được thông qua thì Firefox sẽ chỉ cố gắng tìm và chuyển đến một phiên bản hiện có bằng cách sử dụng cấu hình đó, nếu không tìm thấy nó sẽ tiếp tục khởi động. Ngoài ra, một đối số -new-instance có thể được thông qua khiến Firefox khởi động bất kể các phiên bản hiện có.
Hành vi mới
Với các phiên bản Firefox từ 67 trở đi, thay vì có một cấu hình mặc định cho tất cả các lần cài đặt Firefox, mỗi cài đặt Firefox (dựa trên vị trí thực trên đĩa sau khi nhấp vào bất kỳ liên kết tượng trưng nào) có cấu hình mặc định của riêng nó.
Trong phần này “old profile” đề cập đến cấu hình sẽ được sử dụng làm mặc định trong các phiên bản Firefox trước 67, “dedicated profile” đề cập đến cấu hình được đánh dấu là mặc định để cài đặt Firefox.
Khi khởi động, Firefox vẫn tải profiles.ini, nó chứa thông tin giống như trước đó. Một trong các cấu hình đã biết có thể được đánh dấu là cấu hình mặc định cũ. Ngoài ra profiles.ini hiện bao gồm danh sách các bản cài đặt Firefox đã biết. Mỗi phần mới được đặt tên dựa trên một mã băm của thư mục cài đặt Firefox. Mỗi phần cài đặt bao gồm vị trí trên đĩa của cấu hình dành riêng cho cài đặt đó cũng như một điểm đánh dấu để biết cấu hình đó có bị “khóa” với bộ cài đặt đó hay không.
Như trước đây, Firefox vẫn kiểm tra các đối số dòng lệnh và các biến môi trường có thể ghi đè lựa chọn cấu hình mặc định. Quá thời hạn đó nếu đã có một mặc định dành riêng cho cài đặt này thì nó được sử dụng làm cấu hình mặc định và quá trình khởi động sẽ tiếp tục.
Nơi hành vi khác nhau là nơi không có mặc định dành riêng được đánh dấu cho cài đặt này (điều này bao gồm trường hợp Firefox đang khởi động do khởi động lại và lần chạy trước đó đang sử dụng cấu hình mặc định cũ, điều này thường xảy ra trong quá trình khởi động lại tự động để áp dụng bản cập nhật lên phiên bản 67 hoặc cao hơn).
Nếu phần cài đặt tồn tại trong profiles.ini nhưng không tham chiếu đến bất kỳ cấu hình hiện có nào (nó đã bị xóa) thì cấu hình mặc định chuyên dụng mới sẽ được tạo và sử dụng.
Nếu không có phần cài đặt nào tồn tại trong profiles.ini thì đây được coi là lần đầu tiên cài đặt này chạy ở phiên bản 67 trở lên. Trong trường hợp này, heuristic được sử dụng để quyết định có tạo cấu hình mặc định chuyên dụng mới hay không hoặc đánh dấu cấu hình mặc định cũ là mặc định dành riêng cho cài đặt này:
- Cấu hình mặc định cũ có chứa tập tin compatibility.ini không và nó có thể được phân tích cú pháp hay không. Nếu không, hãy tạo một cấu hình mặc định chuyên dụng mới và tiếp tục khởi động. (Chỉ những phiên bản rất cũ của Firefox mới không tạo tập tin này, vì vậy tập tin bị thiếu có nghĩa là đây là một cấu hình hoàn toàn trống hoặc quá cũ đến mức không thể sử dụng được với các phiên bản Firefox hiện đại).
- Tập tin compatibility.ini bao gồm thông tin về lần cài đặt cuối cùng của Firefox để sử dụng cấu hình mặc định cũ. Nếu cấu hình mặc định cũ được sử dụng lần cuối bởi một bản cài đặt khác của Firefox thì tạo một cấu hình mặc định chuyên dụng mới và tiếp tục khởi động.
- Kiểm tra xem có bất kỳ bản cài đặt Firefox nào khác có mặc định cũ được đánh dấu là mặc định riêng hay không và cấu hình được đánh dấu là “bị khóa” để cài đặt. Nếu vậy, hãy tạo một cấu hình mặc định chuyên dụng mới và tiếp tục khởi động.
- Đánh dấu cấu hình mặc định cũ là cấu hình mặc định dành riêng cho cài đặt này, xóa cấu hình đó làm cấu hình mặc định dành riêng cho các cài đặt khác của Firefox (được thực hiện theo cách mà khi khởi động lần sau, họ sẽ chỉ tạo một cấu hình mới thay vì cố gắng sử dụng mặc định cũ). Tiếp tục khởi động. Tại thời điểm này, cấu hình vẫn được đánh dấu là mặc định cũ nên các phiên bản Firefox cũ hơn sẽ tiếp tục sử dụng làm mặc định cho đến khi chúng được cập nhật.
- Sau đó trong quá trình khởi động (không thể thực hiện điều này khi khởi động sớm vì nhiều lý do khác nhau), hãy kiểm tra xem bản cài đặt Firefox này có được đánh dấu là trình duyệt mặc định của hệ điều hành hay không. Nếu vậy, hãy đánh dấu cấu hình mặc định dành riêng là “đã khóa” đối với cài đặt này.
Người dùng vẫn có thể thay đổi cấu hình mặc định dành riêng cho bộ cài đặt Firefox này bằng trình quản lý cấu hình, thay đổi sẽ chỉ áp dụng cho lần cài đặt này của Firefox. Thực hiện lựa chọn theo cách này sẽ đánh dấu cấu hình đã chọn là “bị khóa” đối với cài đặt này.
Firefox phiên bản dành cho nhà phát triển
Với Firefox phiên bản dành cho nhà phát triển 67 lựa chọn hồ sơ mặc định đã được thay đổi để tiêu chuẩn hơn. Phiên bản dành cho nhà phát triển hiện sử dụng cùng một hệ thống để chọn cài đặt mặc định chuyên dụng như các phiên bản khác của Firefox 67 và không còn phụ thuộc vào việc đặt tên cấu hình cụ thể nữa. Thay đổi duy nhất đối với mô tả ở trên là “old profile” đề cập đến hồ sơ có tên “dev-edition-default” thay vì cấu hình được đánh dấu là mặc định trong profiles.ini.
Đa tiến trình
Đa tiến trình của Firefox cũng đã thay đổi với Firefox 67. Bây giờ Windows và Linux có các hành vi giống hệt nhau:
Trong quá trình khởi động, Firefox chạy qua lựa chọn hồ sơ đầy đủ để quyết định hồ sơ nào được mong muốn dựa trên các đối số dòng lệnh, biến môi trường và thông tin hồ sơ mặc định. Sau đó, Firefox sẽ tìm kiếm bất kỳ phiên bản Firefox hiện có nào đang sử dụng cấu hình mong muốn, nếu một phiên bản tồn tại thì thay vì khởi động thì bất kỳ đối số dòng lệnh nào sẽ được chuyển đến phiên bản tìm thấy.
Điều này có lợi ích là bạn có thể chạy song song các bản cài đặt khác nhau của Firefox mà không cần đối số dòng lệnh bổ sung. Mỗi cái sẽ có cấu hình mặc định riêng, bắt đầu một cái sẽ sử dụng cấu hình mặc định của nó, bắt đầu cái khác sẽ sử dụng cấu hình mặc định khác. Nếu bạn đang chạy Firefox beta và Firefox phiên bản chính thức là trình duyệt mặc định của hệ điều hành thì việc mở một liên kết trong một ứng dụng khác sẽ mở nó trong Firefox phiên bản chính thức mà trước đó nó đã mở trong bất kỳ thứ gì Firefox tình cờ mở vào thời điểm đó.
Với tính năng này thì đối số dòng lệnh -no-remote và -new-instance flags không còn cần thiết để chạy các phiên bản Firefox khác nhau cùng một lúc, nhưng chúng sẽ không gây ra bất kỳ lỗi nào nếu được sử dụng.
Chặn hạ cấp
Một thay đổi khác trong Firefox 67 là phát hiện hạ cấp cấu hình. Khi khởi động, Firefox xem hồ sơ để xem liệu nó có được sử dụng lần cuối bởi phiên bản Firefox mới hơn so với người dùng đang cố gắng khởi động hay không. Điều này được biết là gây ra nhiều vấn đề, đôi khi rõ ràng, đôi khi ít hơn. Firefox bây giờ sẽ ngăn người dùng làm điều này, cung cấp cho họ tùy chọn tạo một hồ sơ mới để sử dụng thay thế.
Vô hiệu hóa các thay đổi và bỏ qua chặn hạ cấp
Các thay đổi đối với lựa chọn cấu hình có thể được hoàn nguyên bằng cách đặt biến môi trường MOZ_LEGACY_PROFILES. Tuy nhiên, điều này sẽ không hoàn nguyên các thay đổi để chạy nhiều phiên bản. Có thể bỏ qua việc chặn hạ cấp bằng cách đặt biến môi trường MOZ_ALLOW_DOWNGRADE hoặc bằng cách sử dụng đối số dòng lệnh --allow-downgrade khi khởi động Firefox.