2010-08-06 46 views
8

Tôi đang cố gắng thêm một tính năng vào ứng dụng biểu mẫu winforms của mình để in số phiên bản trên màn hình chính. Tôi hiện có:Số phiên bản .NET (Phiên bản trình cài đặt)

txtVersion.Text = ProductVersion.ToString(); 

Cho tôi biết phiên bản của chương trình - tất cả đều tốt và tốt.

Tuy nhiên, điều tôi lý tưởng nhất cần làm là chọn phiên bản của chương trình trình cài đặt được sử dụng để tạo msi. Có cách nào để thẩm vấn điều này từ bên trong chương trình đã cài đặt hoặc chuyển thông tin trong quá trình cài đặt bằng cách nào đó không?

Trả lời

3

Có vẻ như bạn muốn ProductVersion property. Bạn có thể nhận được điều đó vào thời gian chạy bằng cách gọi số ::MsiGetProductInfo() function cung cấp ProductCode cho MSI đã cài đặt bạn.

Nếu không hoạt động cho bạn, sau đó viết ProductVersion vào khóa đăng ký và đọc tại thời gian chạy là khá phổ biến. Bạn có thể sử dụng khóa đăng ký đó để giải quyết các sự cố ICE38 được mô tả tại đây: http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

Nhưng không ProductCode được cập nhật mỗi khi số phiên bản được tăng lên? –

+0

Nếu bạn nâng cấp lớn, vâng. Nếu bạn đang sử dụng nâng cấp lớn, thì bạn có thể sử dụng :: MsiEnumRelatedProducts() và chuyển vào mã UpgradeCode của bạn (không nên thay đổi) để lấy ProductCode rồi sử dụng các API khác. Một lần nữa, không tầm thường nhưng cũng không thực sự khó. –

0

Bạn có thể lưu phiên bản trong khóa sổ đăng ký trong khi cài đặt và truy vấn khóa đăng ký từ chương trình.

0

Bạn rất tốt có thể làm từ chương trình cài đặt của bạn (MSI) thông qua hành động tùy chỉnh sử dụng Wix3

liên kết sau đây có thể giúp bạn bắt đầu

WIX at Sourceforge

Wix Tutorial

+1

Hành động tùy chỉnh là không cần thiết cho điều này, có [ProductVersion] được tích hợp. Hành động tùy chỉnh nên tránh bằng mọi giá. –

1

Tốt hơn hết là không mất ứng dụng phiên bản từ trình cài đặt, nhưng lấy phiên bản trình cài đặt từ ứng dụng (AssemblyInfo.cs), imo.

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