2009-03-02 50 views
5

Bất kỳ ai cũng có thể liệt kê các bước cần thiết để cài đặt ứng dụng trên Windows một cách có lập trình. Ngoài việc sao chép các tệp cần thiết, các bước bổ sung cần thiết để ứng dụng của bạn là công dân hạng nhất trong Windows (nghĩa là hiển thị trong danh sách chương trình, danh sách gỡ cài đặt ... vv)hướng dẫn: cài đặt có lập trình trên cửa sổ?

Tôi đã cố gắng để google này, nhưng không có may mắn.

BTW: Đây là một ứng dụng C++ không được quản lý (được phát triển trong Qt), vì vậy tôi không muốn liên quan đến khung .net nếu tôi không phải làm như vậy.

Trả lời

7

Tôi nghĩ rằng chủ đề cho câu trả lời bạn sẽ thấy ở đây là bạn nên sử dụng một chương trình cài đặtbạn không nên viết trình cài đặt tự. Sử dụng một trong nhiều trình cài đặt, chẳng hạn như cài đặt Inno, InstallSheild hoặc bất kỳ điều gì khác mà người khác đề xuất.

Nếu bạn cố tự mình viết trình cài đặt, có thể bạn sẽ làm sai. Điều này không phải là một chút chống lại cá nhân bạn. Nó chỉ là có rất nhiều chi tiết nhỏ mà trình cài đặt nên xem xét, và rất nhiều thứ có thể sai, và nếu bạn muốn tự mình viết trình cài đặt, bạn sẽ phải có được tất cả những điều đó đúng. Điều đó có nghĩa là rất nhiều nghiên cứu và rất nhiều thử nghiệm về phía bạn. Tiết kiệm cho mình những rắc rối.

Bên cạnh việc sao chép tệp, các tác vụ cài đặt khác nhau một chút tùy thuộc vào nhu cầu của chương trình của bạn. Có lẽ bạn cần phải đặt một biểu tượng trên menu Start; công cụ cài đặt nên có cách để thực hiện điều đó rất dễ dàng, tự động điền vào vị trí cài đặt mà khách hàng đã chọn trước đó trong quá trình cài đặt và thậm chí có thể chọn đúng ngôn ngữ địa phương cho nhãn của phím tắt.

Bạn có thể cần phải tạo các mục đăng ký, chẳng hạn như cho các liên kết tệp hoặc cấp phép. Công cụ cài đặt của bạn đã có một cách dễ dàng để chỉ định khóa và giá trị nào cần tạo hoặc sửa đổi.

Bạn có thể cần đăng ký máy chủ COM. Đó là một hành động đủ phổ biến mà công cụ cài đặt của bạn có thể có cách xác định rằng đó là một phần của hoạt động sao chép tệp sau.

Nếu có một số hành động mà công cụ trình cài đặt bạn đã chọn không cung cấp, công cụ có thể cung cấp cách thêm hành động tùy chỉnh, có thể thông qua ngôn ngữ kịch bản hoặc có thể thông qua liên kết mã ngoài. viết được bao gồm trong trình cài đặt của bạn. Hành động tùy chỉnh có thể bao gồm tải xuống bản cập nhật từ một trang web cụ thể, gửi e-mail hoặc kiểm kê những sản phẩm khác từ công ty của bạn đã được cài đặt.

Một vài điều cuối cùng mà một công cụ cài đặt sẽ cung cấp được cách để áp dụng nâng cấp đến một cài đặt hiện có, và là một cách để uninstall chương trình, hoàn tác tất cả những nhiệm vụ lắp đặt (xóa các tập tin, khôi phục lại bản sao lưu, unregistering Máy chủ COM, v.v.).

+0

Câu trả lời của bạn dường như tổng hợp ý chính của các bài đăng còn lại. Cảm ơn rất nhiều! – JimDaniel

5

Tôi đã sử dụng Thiết lập Inno để đóng gói phần mềm cho C++. Nó rất đơn giản so với các giải pháp hạng nặng như InstallShield. Tất cả mọi thứ có thể được chứa trong một setup.exe duy nhất mà không tạo ra tất cả các kịch bản hàng loạt điên rồ và như vậy.

Kiểm tra nó ra ở đây: http://www.jrsoftware.org/isinfo.php

+0

Trong khi bạn đang sử dụng InnoSetup, hãy đảm bảo bạn có giao diện GUI Inno Tools; nó làm cho việc thiết lập kịch bản cài đặt thực sự dễ dàng và có thể chạy trình biên dịch để xây dựng bản cài đặt mà không cần phải đi tới dấu nhắc lệnh. –

0

Bạn đã có các bước chính. Một trong những bạn còn lại là cài đặt trên Start Menu và cung cấp một tùy chọn để tạo ra một biểu tượng desktop và/hoặc khởi chạy nhanh.

Tôi sẽ khuyến khích bạn xem xét sử dụng chương trình thiết lập, theo đề xuất của Jeremy.

10

Tôi rất khuyên bạn nên NSIS. Mã nguồn mở, sự phát triển rất tích cực, và thật khó để phù hợp/đánh bại khả năng mở rộng của nó.

Để thêm chương trình của bạn để Add/Remove Programs trong danh sách (hoặc Programs and Features), thêm các phím reg sau:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAM_NAME] 
"DisplayName"="PROGRAM_NAME" 
"Publisher"="COMPANY_NAME" 
"UninstallString"="PATH_TO_UNINSTALL_PROGRAM" 
"DisplayIcon"="PATH_TO_ICON_FILE" 
"DisplayVersion"="VERSION" 
"InstallLocation"="PATH_TO_INSTALLATION_LOCATION" 
+0

Tại sao bỏ phiếu xuống? –

+0

Tôi không biết. Có lẽ ai đó ghét NSIS. –

+0

Có thể ai đó nghĩ rằng bạn không thực sự trả lời câu hỏi, và thay vào đó chỉ nói với một ví dụ. –

1

GUI cho InnoSetup (rất khuyến khích) là Istool

Bạn cũng có thể sử dụng trình cài đặt MSI được xây dựng trong Visual Studio, đó là một đường cong học tập dốc hơn (tức là đau) nhưng rất hữu ích nếu bạn cài đặt phần mềm trong môi trường công ty.

2

Có vẻ như bạn cần phải kiểm tra hệ thống Windows Installer. Nếu bạn cần nitty-gritty, hãy xem official documentation. Để biết tin tức, hãy đọc nhóm cài đặt blog. Cuối cùng, vì bạn là một lập trình viên, bạn có thể muốn xây dựng trình cài đặt như một lập trình viên. WiX 3.0 là công cụ lựa chọn của tôi - mã nguồn mở, từ Microsoft để khởi động. Bắt đầu với this tutorial on WiX. Tốt lắm.

1

Để có chương trình của bạn xuất hiện trong chương trình menu Start, Bạn sẽ cần phải tạo thư mục C: \ Documents and Settings \ All Users \ Start Menu \ Programs và thêm một cắt ngắn để chương trình bạn muốn phóng. (Nếu bạn muốn ứng dụng của bạn được liệt kê trực tiếp trong trình đơn Start, hoặc trong chương trình menu con, bạn sẽ đặt cắt ngắn của bạn trong thư mục tương ứng)

Để programically tạo một cắt ngắn bạn có thể sử dụng IShellLink (See MSDN article).

Vì bạn muốn gỡ cài đặt, điều này có liên quan nhiều hơn vì bạn không muốn chỉ xóa các tệp DLL hoặc các tệp phổ biến khác mà không kiểm tra các phụ thuộc. Tôi khuyên bạn nên sử dụng trình tạo cài đặt/cài đặt, đặc biệt là ngày nay với Vista trở nên quá phức tạp, bạn cần phải cài đặt của riêng mình nếu cần bất kỳ thứ gì nhiều hơn một tập tin thực thi.

Tôi đã sử dụng máy phát điện thiết lập Paquet Builder trong vài năm nay. (Phiên bản đã đăng ký bao gồm gỡ cài đặt).

+0

Mặc dù thay vì sử dụng "C: \ Documents and Settings \ All Users \ Start Menu \ Programs", bạn nên sử dụng biến môi trường thích hợp. –

+0

Phải, cụ thể hơn là sử dụng một cái gì đó như CSIDL_COMMON_PROGRAMS hoặc CSIDL_PROGRAMS xem: http://msdn.microsoft.com/en-us/library/bb762494.aspx –

+0

Và điều đó tùy thuộc vào việc bạn có đang chạy với tư cách quản trị hay không và nếu có thì đang thực hiện cài đặt chỉ dành cho quản trị viên hoặc toàn người dùng. Nhưng khi viết một trình cài đặt, nhiệm vụ thứ hai (sau khi sao chép tập tin) cần thiết lập mục Thêm/Loại bỏ Chương trình để dọn sạch mọi thứ. – MSalters

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