2009-05-04 25 views
5

Tôi đã tạo ra một trình cài đặt MSI chuẩn cho P & D của ứng dụng của tôi đó là sử dụng các thành phần sau đây:Remove tùy chọn sửa chữa màn hình từ MSI trình cài đặt

  • Một dịch vụ WCF tổ chức như dịch vụ Windows.
  • Ứng dụng GUI giao tiếp với dịch vụ đó.
  • Dll tiện ích mở rộng Shell.

Trình cài đặt hoạt động rất tốt và không có bất kỳ vấn đề nào. Sự cố xảy ra khi người dùng cố gắng cài đặt lại ứng dụng trên ứng dụng hiện có bằng trình cài đặt MSI. Hiện tại, nó xuất hiện với màn hình với 2 tùy chọn "Repair" & "Remove". Cả hai tùy chọn này đều không hoạt động và làm hỏng ứng dụng bị hỏng.

Điều tôi muốn là bỏ qua màn hình này và Hiển thị nội dung nào đó như MessageBox cho biết Ứng dụng đã được cài đặt. Vì tôi không bắt buộc phải cung cấp tùy chọn Sửa chữa cho Người dùng. Và ở mức tối thiểu, tôi có thể ẩn hoặc bằng cách nào đó không cung cấp tùy chọn Sửa chữa.

Bất kỳ trợ giúp hoặc đề xuất nào cho tôi? Vì vậy, đến nay tôi đã thử rất nhiều thứ như sử dụng ORCA thêm tài sản NotRepair vv Nhưng không ai trong số họ làm việc.

Trả lời

5

Có một cái nhìn tại Windows Installer Hướng dẫn tại MSDN cho hai thuộc tính sau đây:

+1

Tôi đã biết các chức năng này nhưng yêu cầu của tôi thì khác. Trong trường hợp của tôi, người dùng đang có trình cài đặt MSI. Bây giờ anh ta có thể thử cài đặt lại phần mềm sau khi cài đặt một lần. Đây là vấn đề, khi MSI hiển thị một màn hình với 2 tùy chọn 1. Sửa chữa 2. Xóa Tôi không muốn màn hình đó. Đây là màn hình tương tự xuất hiện sau khi "thay đổi" opion trong "Add Remove programs" mà bạn đã đề cập. – Sumeet

+0

Bạn muốn gì khi người dùng cuối nhấp chuột vào MSI của bạn, khi nó được cài đặt? – CheGueVerra

0

tôi quấn lên setup.exe và MSI bên trong một một EXE tập tin. Mà trên nhấp chuột chiết xuất các tập tin và kích hoạt Setup.exe. Trong exe đó, tôi đã thêm một mã để kiểm tra xem ứng dụng đã được cài đặt trong máy hay chưa. Trong trường hợp nó được cài đặt, tôi sẽ nhắc người dùng và thoát. Bằng cách này MSI không bao giờ bắt đầu nếu ứng dụng đã được cài đặt, do đó màn hình Repair and Remove không bao giờ xuất hiện. Về, nút Change từ Add/Remove screen, tôi đã sử dụng giải pháp được cung cấp bởi "CheGueVerra". Cảm ơn bạn.

4

Câu trả lời được chấp nhận để lại một vài điều cho ai đó mà không cần nhiều kinh nghiệm cài đặt.

Để thực hiện việc này, bạn phải chỉnh sửa .MSI sau khi được tạo bởi bản cài đặt .NET. Cách hỗ trợ Microsoft dễ dàng để thực hiện việc này là Orca. Bạn có thể cài đặt Orca từ .NET Framework SDK. Nếu bạn nghĩ rằng bạn đã có SDK, nhưng không có Orca trong Trình đơn bắt đầu của bạn, sau đó tìm kiếm máy của bạn cho "Orca.exe" hoặc "Orca.msi".

Sau khi cài đặt Orca, chỉ cần chạy nó. Mở tệp MSI của bạn bằng giao diện người dùng Orca. Ở bên trái, bạn sẽ thấy danh sách "Bảng". Chọn bảng Thuộc tính. Trên ngăn bên tay phải, nhấp chuột phải và thêm. Thêm nút có tên là ARPNOREPAIR. Đảm bảo bạn đặt giá trị thành chuỗi trống "". Ngoài ra, hãy thêm một nút cho ARPNOMODIFY nếu bạn không muốn tùy chọn thay đổi hiển thị trong cửa sổ cho chương trình của mình.

+1

Tôi muốn nhấn mạnh rằng các thuộc tính cần phải là chữ hoa ... – Wolf

1

Nhận ra vấn đề này có một số năm, nhưng tôi cho rằng những người như tôi vẫn gặp sự cố này. Sumeet đề cập trong một nhận xét về giải pháp được chấp nhận mà người dùng vẫn có thể truy cập màn hình với cả hai tùy chọn "Sửa chữa" và "Xóa", được hiển thị.

Có vẻ như trên thực tế, theo ba cách khác nhau, người dùng có thể truy cập trình cài đặt cho một ứng dụng.

Một: Như đã trả lời ARPNOMODIFY và ARPNOREPAIR khắc phục vấn đề trong Add Remove Program only, có thể được thực hiện với "Orca.exe".

Hai: Bằng cách nhấp chuột phải vào trình cài đặt cho msi. Đáng buồn thay đây là một trong những nơi mà dường như không có cách nào để tránh cả hai tùy chọn mà không thực hiện điều chỉnh trên toàn máy tính cho tất cả các tập tin msi.

Ba: Bằng cách bấm đúp vào trình cài đặt, nếu đã được cài đặt, có một màn hình có nút radio "Sửa chữa" và "Xóa".

Tìm thấy sự thích ứng gọn gàng dưới đây để giải quyết điểm truy cập thứ ba, được viết lại phần nào, tại đây: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-help-49010162.html. Nó đồ họa loại bỏ sự lựa chọn cho phép tùy chọn sửa chữa. Lời cảm ơn của tôi đến bởi Paul Brun cho điều này.

  1. Mở tệp msi bằng Orca.exe.
  2. Đi vào bảng 'Thuộc tính'.
  3. Thêm khóa 'ARPNOMODIFY' có giá trị 1.
  4. Thêm khóa 'ARPNOREPAIR' có giá trị 1.
  5. Thay đổi giá trị của thuộc tính 'MaintenanceForm_Action' từ Repair thành Remove.
  6. Đi vào bảng 'Điều khiển'.
  7. Tìm mục nhập bằng Dialog_ 'MaintenanceForm' và Control 'BodyText'.
  8. Thay đổi thuộc tính 'Văn bản' thành điều này: {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Tìm mục nhập bằng Dialog_ 'MaintenanceForm' và Control 'RepairRadioGroup'.
  10. Thay đổi thuộc tính 'Control_Next' từ CancelButton thành FinishButton.
  11. Tìm và xóa mục nhập bằng Hộp thoại 'Bảo trì' và Kiểm soát 'RepairRadioGroup'.

Có liên quan với việc thực hiện các bước trên có thể là tự động hóa quy trình điều chỉnh msi bằng biến đổi nhận được từ thực hiện các bước chỉ một lần. Thông tin thêm về làm thế nào để làm điều đó có thể được tìm thấy ở đây: Use Orca to edit msi from command line?

+0

Cảm ơn u !!! U đã cứu mạng tôi! – Aditi

1

Tôi đồng ý với Henrik, nhưng trong trường hợp của tôi bước cuối cùng

Tìm và loại bỏ các mục với Dialog_ 'MaintenanceForm' và Control 'RepairRadioGroup'.

gây ra lỗi 2814.
Vì vậy, đề nghị của tôi là: làm cho RepairRadioGroup vô hình.Để làm điều đó chỉ cần đặt nó, s Attribute đến 0

CẬP NHẬT kiểm soát SET Attributes = 0 Ở ĐÂU kiểm soát = 'RepairRadioGroup'

+0

Cảm ơn bạn đã thêm câu trả lời của Henrik. U đóng vai trò quan trọng trong việc cứu mạng tôi! – Aditi

0

này là dễ dàng hơn như ngày nay nhiều nếu bạn đi qua InstallShield để chỉnh sửa của bạn Tệp ISM. Để vô hiệu hóa nút ChangeRepair từ Add/Remove màn hình chương trình thiết lập các cài đặt dưới đây để Yes trên Installation Designer tab>Installation Information nút trong khung menu>General Information nút trong khung menu>Add or Remove Programs phần trong cửa sổ chi tiết

  1. Disable Change Button
  2. Disable Repair Button

enter image description here

Để đối phó với vấn đề thứ hai, bạn chỉ cần sửa đổi màn hình hộp thoại MaintenanceWelcome sẵn có của installshield.

  1. Thay đổi văn bản của nhãn thư chào mừng thành một số thông báo lỗi, ví dụ: "Phiên bản khác của sản phẩm này đã được cài đặt. Cài đặt không thể tiếp tục."
  2. Trong hành vi khi nhấp vào nút Next, chỉ cần thêm sự kiện EndDialog. Đặt điều kiện thực thi của nó thành 1 để nó thực thi luôn. Đặt Value thành Exit
  3. Thay đổi văn bản của nút đẩy Next thành "Hoàn tất".
  4. Tắt hoặc ẩn nút nhấn Cancel nếu bạn muốn.

Bạn đã hoàn tất!

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