Trên Windows ít nhất một ứng dụng chạy được khóa tập tin .exe của riêng mình và tất cả các tệp .dll được liên kết tĩnh. Điều này ngăn không cho ứng dụng tự cập nhật trực tiếp, tại khách hàng tiềm năng nếu muốn ngăn chặn khởi động lại (nếu khởi động lại OK, ứng dụng có thể chuyển cờ MOVEFILE_DELAY_UNTIL_REBOOT
sang MoveFileEx và được tự do 'ghi đè' đó là .exe riêng, như vẫn bị trì hoãn). Đây là lý do tại sao các ứng dụng thông thường không kiểm tra các bản cập nhật trên riêng của chúng .exe, nhưng chúng khởi động một shim để kiểm tra các bản cập nhật và sau đó khởi chạy ứng dụng 'thực'. Trong thực tế, 'shim' thậm chí có thể được thực hiện bởi chính hệ điều hành, nhờ vào tệp kê khai được định cấu hình đúng. Visual Studio ứng dụng được xây dựng có được điều này như là một công cụ đóng gói thuật sĩ prefab, xem ClickOnce Deployment for Visual C++ Applications.
Ứng dụng Linux điển hình không cập nhật chính nó do nhiều ứng dụng của nhiều hệ điều hành. Hầu hết các ứng dụng được phân phối dưới dạng nguồn, chạy một số phiên bản của tự động địa ngục để tự cấu hình và tự xây dựng, sau đó tự cài đặt thông qua make install
(tất cả chúng có thể được tự động hóa sau gói). Ngay cả các ứng dụng được phân phối dưới dạng nhị phân cho một hương vị cụ thể của Linux không tự sao chép, nhưng thay vào đó hãy cài đặt phiên bản mới cạnh nhau và sau đó chúng cập nhật symbolic link
để 'kích hoạt' phiên bản mới (một lần nữa, quản lý gói phần mềm có thể ẩn nội dung này).
Ứng dụng OS X nằm trong nhóm Linux nếu chúng thuộc về hương vị Posix hoặc ngày nay rơi vào nhóm ứng dụng Mac AppStore xử lý các bản cập nhật cho bạn.
Tôi mong rằng việc tự cập nhật sẽ không bao giờ đạt được sự tinh tế của một trong hai công nghệ này (ClickOnce, RPM, AppStore) và cung cấp cho người dùng khả năng phát hiện, nâng cấp và gỡ cài đặt. Tôi sẽ đi với dòng chảy và sử dụng các công nghệ này trong nền tảng tương ứng của họ.
Nguồn
2012-02-06 16:17:24
Theo như tôi biết, Windows sẽ không cho phép bạn ghi đè EXE khi chương trình đang chạy. Đây là một trong những điều khó chịu nhất trong Windows, imo. – unwind
Như tôi đã nói với bạn về câu hỏi khác, bạn không thể ghi đè lên một exe thats đang chạy. Tôi thậm chí còn đưa ra các hướng dẫn từng bước về cách thực hiện toàn bộ quá trình này. –
@MooingDuck Tôi biết! Tôi vẫn đang tham khảo câu trả lời của bạn như một thiết kế cấp cao. Tôi chỉ đơn giản là thu hẹp phạm vi cho câu hỏi cụ thể này. Đã, tôi khá hài lòng với câu trả lời. – TheBuzzSaw