2009-07-29 33 views
5

Chúng tôi hiện có 4 cài đặt cho phần mềm máy khách của chúng tôi:Force ghi đè của App.config trong khi cài đặt

  • ClientSetupTest
  • ClientSetupProduction
  • ClientUpdateTest
  • ClientUpdateProduction

Sự khác biệt duy nhất giữa chúng là Thiết lập chứa các tệp có thể phân phối lại các Báo cáo Crystal và Cập nhật không không. Kiểm tra và sản xuất chỉ định rõ môi trường nào chúng chạy và sự khác biệt duy nhất có một dòng trong tệp Client.exe.config.

Dumb, tôi biết, đó là lý do tại sao tôi thay thế tất cả bằng một trình cài đặt sau khi loại bỏ Báo cáo tinh thể. Trình cài đặt mới ghi môi trường đã chọn vào tệp setup.config, được tham chiếu bởi thuộc tính tệp (see here).

Thuộc tính "tệp" mới đối với tệp cấu hình với trình cài đặt mới này. Vấn đề tôi đang gặp phải là nếu chúng ta sửa đổi tệp Client.exe.config trên một cài đặt cũ, sau đó chạy trình cài đặt mới, tệp cấu hình không bao giờ được cập nhật với thuộc tính "tệp".

Có cách nào để buộc tệp cập nhật tệp không? RemovePreviousVersions không chính xác hoạt động, vì nó là một trình cài đặt khác, trừ khi tôi hiểu nhầm điều gì đó. Ý tưởng hiện tại của tôi, có thể sẽ hoạt động, là thêm mã trong phương thức OnBeforeInstall để đổi tên Client.exe.config cũ thành tệp sao lưu, vì vậy nó sẽ luôn viết một tệp mới. Có vẻ như cần phải có một giải pháp đơn giản hơn trong bản cài đặt. Ý tưởng nào?

EDIT: Đổi tên tệp cấu hình cũ thành Client.exe.config.old trước khi gọi base.OnBeforeInstall() không hoạt động. Nó đã đổi tên tệp, nhưng chưa bao giờ viết tệp mới.

Trả lời

4

Windows Installer won't update a modified file.

tập tin Nonversioned là dữ liệu người dùng-Nếu ngày Modified là sau hơn ngày Tạo cho các tập tin trên máy tính, không cài đặt tập tin bởi vì các tùy chỉnh người dùng sẽ bị xóa. Nếu Sửa đổi và Tạo ngày giống nhau, hãy cài đặt tệp. Nếu ngày tạo muộn hơn ngày Sửa đổi, tệp được coi là chưa sửa đổi, cài đặt tệp.

Bạn có một số tùy chọn:

  • bao gồm một hành động tùy chỉnh có thể sửa đổi tập tin tại chỗ. Đây có thể là mã số script hoặc .NET.

  • làm như bạn nói - di chuyển tệp hiện có ra khỏi đường đi. Trình cài đặt sẽ không dừng lại trên đó. Nhưng bạn cần phải chắc chắn rằng nó xảy ra theo thứ tự bạn đang tưởng tượng. Bạn có thể cần Orca để tìm ra thứ tự.

  • bao gồm tùy chọn tùy chỉnh để đặt ngày tạo thành "hôm nay". Điều này sẽ thực sự đơn giản với hành động tùy chỉnh theo kịch bản, sử dụng Scripting.FileSystemObject. Sau đó, trình cài đặt Windows sẽ ghi đè lên nó.

+0

Cảm ơn. Tôi sẽ cung cấp cho các tùy chọn tùy chỉnh một shot. Tôi vẫn sẽ có vấn đề không mang theo các thiết lập tùy chỉnh của họ, nhưng nếu nó đã được sửa đổi, tôi có thể phát hiện nó và sao chép cấu hình cũ. –

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