2010-04-09 36 views

Trả lời

9

Theo How to: Create a Windows Installer for a 64-bit Platform:

Để phân phối một ứng dụng .NET Framework cả 32 và 64-bit nền tảng, xây dựng hai gói MSI, một nhắm vào một 32-bit và một khác Máy tính 64 bit. Người dùng có thể cài đặt gói dự án thiết lập 32 bit và nó rất có thể chạy dưới dạng ứng dụng 642 bit , chỉ dự án thiết lập 64 bit sẽ cài đặt vào thư mục "Program Files64".

Không phải trải nghiệm tốt nhất, nhưng hoạt động.

Cập nhật: Cách thông thường mọi người đối phó với mong muốn tránh hai gói cài đặt là tạo ra một cài đặt thực thi, gói cả trình cài đặt và chọn đúng trình cài đặt.

Bạn chỉ có thể tạo C# nhanh (mặc dù bây giờ bạn có vấn đề khởi động nó trên máy không có. Net. Yeah, có máy như vậy chưa? :-)) hoặc C++ thực thi chính mình phát hiện nền tảng chạy trên và khởi chạy tiến trình msiexec với đúng .msi được trích xuất từ ​​các tài nguyên thực thi hoặc được tải xuống từ một siter web.

Hoặc this SO question's accepted answer nói ngắn gọn về điều đó và đề cập đến công cụ của bên thứ ba được gọi là Advanced Installer, có thể giúp bạn với điều này. Lưu ý rằng tôi đã không thử công cụ đó và tôi không thể xác minh cho nó, tôi chỉ đề cập đến nó chỉ để tham khảo; bạn sẽ phải tự mình đánh giá nó. :-)

+0

+1: Bạn đánh bại tôi đến liên kết. Tôi sẽ trả lời như vậy. – IAbstract

+0

Đó chính xác là những gì tôi muốn tránh: hai gói msi riêng biệt. –

+0

Tôi hoàn toàn hiểu được mong muốn của bạn, nhưng chỉ vì bạn mong muốn điều gì đó, điều đó sẽ không làm cho nó khả thi hơn. Ít nhất không phải với MSI. Bạn có thể xem xét các công cụ cài đặt thay thế, nhưng sau đó bạn có nguy cơ rằng công cụ cài đặt không tuân thủ tất cả các nguyên tắc của hệ điều hành đúng cách. –

1

Nếu ứng dụng của bạn hoạt động ở 32 và 64 bit, nó là 32 bit và do đó nó nằm trong thư mục (x86).

+2

không đúng. Nếu kiến ​​trúc đích không được chỉ định khi một ứng dụng .Net được xây dựng, nó được biên dịch thành một assembly IL độc lập với kiến ​​trúc. Khi ứng dụng như vậy được khởi động trên máy tính người dùng, CLR biên dịch nó đúng lúc thành một mã máy riêng cho nền tảng mà nó đang chạy. Trên hệ điều hành 32-bit, nó sẽ được JITed như là một 32-bit, nhưng trên hệ điều hành 64-bit, nó sẽ được JITed như một ứng dụng 64-bit. –

+0

Tôi vừa mới đăng bài đó, nhưng Penov đánh tôi. – wtaniguchi

+1

Aha, không biết rằng và luôn luôn giả định bất cứ điều gì chạy trong 64-bit và 32-bit chỉ là chạy trong 32-bit thi đua trên 64-bit kiến ​​trúc đó là lý do tại sao họ đã được tách biệt như thế. Sẽ để lại phản hồi để nhận xét của bạn có thể được nhìn thấy. –

0

Liên kết này http://msdn.microsoft.com/en-us/library/cd7a85k9%28v=VS.90%29.aspx (được tham chiếu trong liên kết bạn đã đăng) có phần này: Để cài đặt tệp vào Tệp Phổ biến, Tệp Chương trình hoặc Thư mục hệ thống trên nền tảng 64 bit.

Điều này sẽ giúp bạn, miễn là bạn nhắm mục tiêu nền tảng x64 và không có bất kỳ tham chiếu nào đến các thư viện chỉ x86.

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