Sự khác biệt giữa một tập tin thực thi độc lập và một tập tin thực thi được cài đặt?


17

Tôi đã nhận thấy trên Windows, ít nhất, bạn có thể tải xuống một tệp thực thi được liên kết tĩnh, trực tiếp và khởi chạy trực tiếp hoặc viết chương trình của riêng bạn và thực thi nó (thậm chí là động) mà không cần phải cài đặt nó.

Điều đó đưa tôi đến điểm chính của tôi ... mục đích của quá trình cài đặt là gì? Ý tôi là ngoài Windows Registry . Tuy nhiên, để phục vụ cho mục đích sử dụng và thực tế, có thể có một chương trình độc lập, độc lập, có thể chạy, được lưu trữ trên bộ lưu trữ không bay hơi và được truy cập thông qua hệ thống tệp của bất kỳ thiết bị nào trên đó và được thực thi trên HĐH. Vì vậy, vấn đề lớn với tất cả doanh nghiệp "cài đặt này" là gì nếu nhiều chương trình lớn có độ lớn gần như có thể hoạt động hoàn hảo mà không cần thông qua cấu hình cài đặt? Nó đánh đố tôi một chút, và ngoài cơ sở dữ liệu hoặc các hệ thống cấu hình siêu dữ liệu / truy cập khác, sự khác biệt thực sự ở đây là gì nếu cái sau (một tệp thực thi được cài đặt) thực hiện và hoạt động theo cách độc lập?

Có sự khác biệt nào ở đây mà tôi không biết với chương trình chưa cài đặt so với chương trình đã cài đặt không?

PS: Điều này không phải áp dụng cho HĐH Windows, nhưng bất kỳ ứng dụng nào thực hiện chức năng tương tự.

Câu trả lời:


16

Có một số lý do tại sao các chương trình đến như trình cài đặt thay vì các tệp thực thi độc lập:

Mối quan tâm về kích thước tệp

  • Các chương trình có nhiều phụ thuộc lớn có thể đóng gói các trình cài đặt dựa trên Web tải xuống các phụ thuộc và đặt chúng ở một vị trí chung để chúng có thể được chia sẻ bởi nhiều chương trình. Ví dụ, DirectX là một thư viện rất lớn. Nếu mọi chương trình đơn lẻ trên hệ thống của bạn phụ thuộc vào DirectX chỉ gói toàn bộ thời gian chạy DirectX với nó, nó sẽ tiêu tốn một chút dung lượng. Điều này có vẻ không quan trọng ở độ tuổi 4 TB, nhưng hãy xem xét rằng SSD có dung lượng nhỏ hơn rất nhiều và chúng sẽ được sử dụng phổ biến trên ultrabook, một số có dung lượng lưu trữ chỉ 64 GB. Và tất nhiên, có nhiều thư viện chia sẻ khác ngoài DirectX.

  • Các chương trình rất lớn và được cập nhật liên tục được phân phối tốt nhất dưới dạng tập hợp của nhiều tệp nhỏ, cùng với chương trình trình khởi chạy hoặc trình cập nhật kiểm tra Internet để cập nhật và nếu có bản cập nhật nào tồn tại, chỉ tải xuống các thay đổi cần thiết. Nếu tất cả các chương trình lớn được vận chuyển dưới dạng một tệp thực thi nguyên khối, rất có thể quy trình vá sẽ yêu cầu tải lại toàn bộ tệp thực thi, vì việc vá tệp thực thi đang chạy trên đĩa gần như không thể do khóa tệp. Ngoài ra, vì trình cập nhật cần biết các tệp của nó ở đâu, nên nó thường lưu trữ đường dẫn thư mục đó ở một vị trí nổi tiếng trong sổ đăng ký.

Mối quan tâm của người dùng

  • Trình cài đặt cho các chương trình rất lớn, chẳng hạn như Visual Studio và Microsoft Office, cho phép người dùng bỏ chọn cài đặt một số tính năng nhất định, nếu người dùng biết họ sẽ không bao giờ cần đến chúng. Điều này có 3 lợi ích tiềm năng: nó làm giảm mức tiêu thụ không gian đĩa; nó có thể giảm thời gian tải xuống và tiêu thụ băng thông nếu trình cài đặt là trình tải xuống web; và nó có thể giảm "lộn xộn" và "phình to" trên máy của người dùng, ít menu bắt đầu / phím tắt trên màn hình hơn, ít chương trình khởi động hơn, v.v.

  • Trình cài đặt cho các chương trình phức tạp thường đi kèm với các tùy chọn cấu hình mà người dùng có thể thiết lập bằng giao diện đồ họa thân thiện với người dùng như một phần của trình cài đặt. Xem ví dụ trình cài đặt MySQL hoặc SQL Server, có thể đưa bạn qua toàn bộ quá trình khởi động máy chủ cơ sở dữ liệu của bạn trước khi bạn nhấp vào "Hoàn tất" trên trình cài đặt.

  • Trình cài đặt có thể nhắc người dùng về thông tin cần thiết, chẳng hạn như khóa cấp phép, chỉ cần nhập một lần. Điều này có thể đơn giản hóa việc thiết kế chương trình và giảm số lượng công việc phải làm và kiểm tra khi khởi động. Điều này cũng dẫn đến việc người dùng có niềm tin rằng, một khi chương trình được cài đặt thành công, nó sẽ "chỉ hoạt động" - không còn "gotchas" nào trong chương trình có thể ngăn họ sử dụng nó.

Mối quan tâm tương thích

  • Một số chương trình xung đột với các chương trình khác. Đây là một thực tế đơn giản và đáng tiếc của công nghệ phần mềm. Trước khi cài đặt một chương trình đã biết xung đột với các chương trình khác, trước tiên, thường hữu ích khi kiểm tra hệ thống để xem liệu chương trình không tương thích có được cài đặt hay không. Người dùng sau đó có thể được cảnh báo nếu vậy. Ví dụ, có một tiềm năng không tương thích rất nguy hiểm trong các phiên bản cũ hơn của VMware và VirtualBox, dẫn đến Màn hình xanh chết chóc, bởi vì một chương trình sẽ cố gắng sử dụng một hướng dẫn bộ xử lý ảo hóa đặc biệt sau khi sản phẩm kia được dành cho người dùng . Nếu bạn chỉ đơn giản là cung cấp sản phẩm cuối cho người dùng mà không cần trình cài đặt, bạn sẽ phải kiểm tra sự hiện diện của các sản phẩm không tương thích ở mỗi bắt đầu chương trình của bạn, điều này có thể làm chậm quá trình khởi động chương trình.

  • Các chương trình có thể có sự phụ thuộc vào các thành phần hệ thống khác chỉ có thể được cài đặt ở cấp độ toàn hệ thống, không phải ở cấp độ mỗi người dùng. Để cài đặt các thành phần hệ thống đặc biệt này, các đặc quyền quản trị thường được yêu cầu và trình cài đặt thường phải được chạy.

Đặc quyền nâng cao và dịch vụ đặc biệt

  • Một số chương trình phụ thuộc vào các thay đổi của hệ điều hành cho chức năng của chúng và những thay đổi này không thể được thực hiện dễ dàng nếu không có một số loại trình cài đặt để chăm sóc chúng với các đặc quyền quản trị. Chẳng hạn, các chương trình cài đặt trình điều khiển hoặc mô-đun hạt nhân, như Wireshark, không thể đơn giảnđược chạy, bởi vì bạn hoàn toàn phải gửi các thành phần chế độ kernel trong các tệp riêng biệt. Trong trường hợp tốt nhất tuyệt đối, bạn vẫn phải yêu cầu người dùng giải nén thủ công một tệp lưu trữ, sau đó chạy một số loại trình cài đặt cho trình điều khiển thiết bị. Dịch vụ là một ví dụ khác về một cái gì đó yêu cầu đặc quyền quản trị để cài đặt. Phần mềm cài đặt đặc biệt tốt để có được quyền quản trị một cách tao nhã, mà không yêu cầu chính chương trình chính yêu cầu quyền quản trị mỗi khi chạy (đây sẽ là một sự phơi bày bảo mật không cần thiết trong nhiều trường hợp).

Đã đưa ra tất cả những lý do tại sao trình cài đặt hữu ích, đây là một vài quan sát từ phía bên kia:

  • Nhiều chương trình, ngay cả những chương trình chỉ có sẵn để tải xuống dưới dạng trình cài đặt yêu cầu quyền quản trị viên, có thể bị "giải nén" khỏi trình cài đặt của chúng và chạy trực tiếp mà không cần cài đặt chúng. Các chương trình khác, đặc biệt là các chương trình nguồn mở, được đóng gói lại thành các tệp thực thi độc lập bởi PortableApps . Đáng chú ý là một số chương trình, khi được giải nén khỏi trình cài đặt của chúng, sẽ bị giảm chức năng, lỗi trình bày hoặc các vấn đề khác.

  • Trên các hệ điều hành khác ngoài Windows, hầu như luôn có thể tải xuống (hoặc biên dịch) các chương trình và chạy chúng như một người dùng thông thường mà không cần root. Có một vài trường hợp ngoại lệ đối với các gói là một phần cốt lõi của hệ điều hành, nhưng đối với hầu hết các ứng dụng người dùng, bạn có thể chạy nó trong thư mục chính của mình mà không cần cài đặt toàn hệ thống bằng trình quản lý gói. Windows là một trường hợp đặc biệt trong đó hầu hết các chương trình máy tính để bàn trên Windows đều có trình cài đặt và thường không thể được cài đặt theo bất kỳ cách nào khác.

  • Ngay cả trên các nền tảng không phải Windows, các chương trình cần khả năng tải mô-đun hạt nhân đi kèm với một số loại trình cài đặt, sẽ biên dịch mô-đun hạt nhân và cài đặt nó trong thư mục bên phải. Bạn cũng có thể thấy một trình cài đặt trong trường hợp chương trình là một trình nền sẽ được bắt đầu bằng cách sử dụng tập lệnh dịch vụ hệ thống, ví dụ như trong /etc/init.d. Loại "nhị phân thu nhỏ" này là một phương thức phân phối ít phổ biến hơn trên GNU / Linux, nhưng hầu hết các bản phân phối Linux vẫn cung cấp hầu hết các phần mềm dưới dạng các gói có thể cài đặt, mỗi gói yêu cầu quyền truy cập root (quyền truy cập quản trị viên) để cài đặt.


Kết luận

Bạn hỏi tại sao chúng ta cần người cài đặt. Câu trả lời ngắn gọn là chúng ta không - dù sao cũng không nói đúng. Về nguyên tắc, có một số ví dụ về các ứng dụng không thể được gói vào một tệp thực thi độc lập không có tài nguyên, không có trình cài đặt, v.v. vào một tệp trên đĩa và cài đặt nó một cách linh hoạt khi khởi động chương trình và gửi tất cả tài nguyên của nó (hình ảnh, âm thanh, v.v.) được gói trong phần dữ liệu của tệp thực thi.

Sử dụng trình cài đặt hay không là lựa chọn mà các nhà sản xuất phần mềm phải thực hiện. Có những lợi thế và bất lợi khi sử dụng một trình cài đặt. Nhiều nhà cung cấp chọn để phân phối phần mềm của họ cả như một trình cài đặt, như một nhị phân độc lập, hoặc ít nhất là một tập tin ZIP mà chỉ đơn giản có thể giải nén và chạy. Đối với phần mềm không hoàn toàn yêu cầu trình cài đặt, đây là một cách rất thực tế và khiến mọi người hài lòng. Thông thường, phần mềm không xuất xưởng dưới bất kỳ hình thức nào khác ngoài trình cài đặt là phần mềm yêu cầu đặc quyền quản trị để cài đặt một số thành phần của chính nó, vì trình cài đặt là cách thanh lịch nhất để có được các đặc quyền cần thiết.

Cá nhân, tôi thấy các trình cài đặt rất khó chịu trong công việc hàng ngày của mình, bởi vì đôi khi tôi muốn chạy một chương trình khi tôi không có quyền quản trị trên máy tính mà tôi đang sử dụng. Tôi có khá nhiều kinh nghiệm giải nén thủ công các trình cài đặt để giải nén các tệp chương trình bên trong, và sau đó làm cho các tệp đó chạy chính xác. Tuy nhiên, trên PC cá nhân của tôi ở nhà, nơi tôi luôn có quyền truy cập quản trị, tôi thấy các trình cài đặt có lợi và thuận tiện, bởi vì hầu hết các trình cài đặt cung cấp cho tôi các tùy chọn hữu ích, như có nên tạo lối tắt trên máy tính để bàn không, mà tôi sẽ phải tự làm thay vì không có nó.


Câu trả lời tuyệt vời, nhưng việc bạn mở bằng DirectX và thời gian chạy không có ý nghĩa gì. Trước hết, thời gian chạy duy nhất của DirectX nằm trong ngôn ngữ được viết bằng chính ngôn ngữ đó là C.

@TomTurkey Ừm ... cái gì? Tại sao nó được viết bằng ngôn ngữ nào? Chắc chắn, bạn có thể liên kết tĩnh bất kỳ thành phần DirectX nào mà bạn cần trực tiếp vào tệp thực thi của mình, nhưng như tôi đã nói, điều đó gây ra sự cố kích thước tệp nếu nhiều chương trình bắt đầu thực hiện việc này với các thư viện lớn (ví dụ: Qt 4.x, chạy khoảng 40 MB ). Mã phải ở đâu đó và bạn không thể giả sử rằng phiên bản DirectX bạn cần đã được cài đặt trên hệ thống hoặc bạn sẽ gặp lỗi khi ai đó mở chương trình của bạn trên Windows XP SP2 chưa được vá lứa tuổi.
allquixotic

4
Ồ, tôi nghĩ rằng bạn đã hiểu lầm tôi - trong câu trả lời của tôi, tôi đã không nói về việc cài đặt DirectX ; Tôi đã nói về việc cài đặt một chương trình phụ thuộc vào DirectX. Để đáp ứng sự phụ thuộc đó, bạn có thể biên dịch DirectX trực tiếp vào ứng dụng của mình, do đó làm tăng mức tiêu thụ dung lượng ổ đĩa bị lãng phí hoặc bạn có thể gói một ứng dụng nhỏ trong trình cài đặt để kiểm tra xem bạn có cài đặt thời gian chạy DirectX phù hợp hay không, và nếu không, hãy tải xuống và đặt chúng ở một vị trí hệ thống tập trung. Thứ hai là hiệu quả hơn nhiều về không gian đĩa và kích thước tải xuống.
allquixotic 6/12/13

3
@allquixotic Ngoài ra, cấp phép. Đôi khi, một thư viện có thể không được cấp phép để phân phối lại độc lập với trình cài đặt của nó. DirectX có thể rơi vào danh mục, tôi không chắc chắn. .NET framework, tôi nghĩ vậy. Đó không phải là một hạn chế kỹ thuật, mà là một pháp lý. (Tuy nhiên, .NET framework có các hạn chế kỹ thuật bổ sung. Nó được tích hợp khá chặt chẽ vào HĐH.)
Bob

1
boop . Âm thanh của một bình luận nâng cao. Trong đầu tôi.
allquixotic 7/12/13

3

Quá trình cài đặt xem xét các mục này:

  1. cho dù bạn đã yêu cầu thư viện (api) được cài đặt, chẳng hạn như phiên bản khung .net hoặc trực tiếp X.

  2. Cài đặt một số tệp DLL hệ thống bổ sung vào thư mục hệ thống. Nếu thư mục hệ thống đã chứa các tệp này (cùng phiên bản), thì bỏ qua bước này. Bằng cách này, bạn không cần một vài bản sao của cùng một tệp DLL.

  3. Cài đặt phím tắt vào menu Bắt đầu hoặc Máy tính để giúp bạn khởi động ứng dụng nhanh chóng.

  4. Như bạn đã nói, đăng ký sửa đổi. Bước này thực sự có thể được thực hiện khi ứng dụng được thực thi lần đầu tiên trong máy tính này, vì vậy nó không quá quan trọng.

  5. rất quan trọng: có nên gói một phần mềm (như thanh máy tính để bàn của Google hoặc thanh Yahoo! vào IE của bạn không). Đây là cách rất nhiều phần mềm độc lập tạo doanh thu cho nhà phát triển. Đừng quên rằng, nếu bạn đang sử dụng phần mềm miễn phí.

Vì chúng tôi đang xem xét một ứng dụng "thực thi", chúng tôi không cần phải thảo luận về các bước có thể cài đặt tiện ích bổ sung IE hoặc những thứ liên quan.


3

Chương trình độc lập không có phụ thuộc bên ngoài.

Nó không phải chỉ là tệp .exe, nó có thể có các thư viện và tệp dữ liệu đi kèm: Giải nén tệp lưu trữ vào một thư mục và chạy tệp thực thi. Nếu bạn chỉ giải nén một kho lưu trữ, không có phím tắt nào được thêm vào menu Bắt đầu, do đó bạn sẽ phải điều hướng đến thư mục chứa ứng dụng đã giải nén và khởi động nó từ đó hoặc tự tạo một lối tắt cho nó trong menu Bắt đầu. Nhiều người dùng máy tính cảm thấy khó khăn.

Dễ sử dụng hơn

Một trình cài đặt hướng dẫn người dùng trong suốt quá trình cài đặt. Bạn tải xuống trình cài đặt, .exe hoặc .msi (trước đây thích hợp hơn cho người dùng không nâng cao) và chạy nó. Nó chọn thư mục cài đặt, thường là trong Program Files, sao chép các tệp, tạo lối tắt trong menu Bắt đầu. Bạn đã hoàn thành: trong phần lớn các trường hợp bạn chỉ cần nhấp vào Tiếp theo nhiều lần.

Sau đó vào menu Start và chạy ứng dụng. Một số trình cài đặt cung cấp tùy chọn để khởi động ứng dụng khi cài đặt hoàn tất.

Nếu ứng dụng mở các tệp hoặc tài liệu thuộc loại nhất định, trình cài đặt sẽ đăng ký nó với trình bao. Vì vậy, bạn có thể nhấp vào tập tin để mở nó.

Thỏa thuận cấp phép

Nhiều ứng dụng, cả thương mại và miễn phí, yêu cầu bạn chấp nhận thỏa thuận cấp phép trước khi bạn có thể sử dụng ứng dụng của họ. Cài đặt không tiến hành cho đến khi bạn thừa nhận bạn đồng ý với các điều khoản cấp phép. Ngay cả khi bạn không đọc giấy phép, bạn đã đồng ý.

Phụ thuộc

Đôi khi nó không đủ để chỉ sao chép các tập tin thực thi. Các ứng dụng thường sử dụng các thành phần được chia sẻ hoặc các thư viện thời gian chạy đặc biệt. Ví dụ: thời gian chạy khung .Net phải được cài đặt để chạy ứng dụng được viết cho .Net; ngay cả thời gian chạy Visual C ++, nếu nó không được liên kết tĩnh, phải được cài đặt. Trình cài đặt đảm bảo đảm bảo tất cả các phụ thuộc được thỏa mãn.

Nếu một ứng dụng bao gồm một số tệp .exe và / hoặc, thì liên kết động với thời gian chạy Visual C ++ sẽ giảm dung lượng ổ đĩa. Nếu .exe và dll được liên kết tĩnh, thì thời gian chạy được sao chép trong mỗi tệp.

Điều khoản cấp phép của thư viện có thể không cho phép liên kết thống kê.

Bảo vệ

Nếu một lỗ hổng được tìm thấy trong thời gian chạy, nó có thể được cập nhật riêng từ ứng dụng. Các bản cập nhật cho thời gian chạy .Net và Visual C ++ được cài đặt tự động thông qua Windows Update.

Nếu các tệp thực thi và thư viện được liên kết tĩnh, thì nhà cung cấp ứng dụng phải biên dịch lại ứng dụng và phát hành phiên bản cập nhật. Vì vậy, sử dụng thời gian chạy chung giúp giảm chi phí bảo trì ứng dụng cho các nhà phát triển và nhà cung cấp.

Cài đặt để Program Filescũng cung cấp môi trường an toàn hơn: các tệp ở đó không thể được sửa đổi hoặc xóa mà không có đặc quyền của quản trị viên.

Đăng ký

Nhiều ứng dụng Windows dựa vào các mục trong sổ đăng ký. Nếu ứng dụng sử dụng COM, tất cả các đối tượng phải được đăng ký nếu không ứng dụng sẽ không tạo được đối tượng cần thiết và sẽ không khởi động.


1
+1 để cập nhật bảo mật cho các thành phần được chia sẻ - Tôi không nghĩ sẽ viết điều đó trong câu trả lời của mình.
allquixotic 7/12/13

0

Câu trả lời ngắn gọn: một exe độc ​​lập yêu cầu không có thư viện nào được cài đặt trên máy tính để chạy và không yêu cầu các mục đăng ký hoặc các thành phần khác.

Một tệp được cài đặt thể độc lập trong gói trình cài đặt, nhưng thường phụ thuộc vào nhiều thành phần và thư viện được cài đặt cùng với nó.

Trong nhiều trường hợp, thông qua Universal Extractor (cập nhật không chính thức: tại đây ), bạn có thể trích xuất nội dung của trình cài đặt và chạy chương trình mà không có quyền quản trị trong các cửa sổ. Trình cài đặt MSI có thể được giải nén với lessmsi .

Trong hầu hết các hệ điều hành khác, tất cả các chương trình có thể được chạy mà không có quyền riêng tư / quản trị viên, thông qua 'bin', 'lib' và các thư mục khác trong thư mục chính. Cá nhân, tôi coi thường các trình cài đặt trong phần lớn thời gian, bởi vì chúng khiến tôi khó sử dụng các chương trình hơn với các quyền riêng tư hành chính khi tôi không có chúng. Nhưng chúng được các công ty lớn đóng gói theo cách đó để đơn giản hóa quy trình cho người dùng cuối trung bình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.