2013-09-05 37 views
11

Ứng dụng của tôi được tạo bằng cấu hình "Any CPU". Trình cài đặt WIX cho ứng dụng được xây dựng với platform=x86 do đó MSI kết quả là 32 bit.Có hại gì khi cài đặt chương trình "AnyCPU" trên Windows 64 bit sử dụng MSI 32 bit?

Khi tôi chạy MSI 32 bit trên Windows 64 bit. Thuộc tính [ProgramFilesFolder] được giải quyết thành "C: \ Program Files (x86)" và đường dẫn đăng ký được giải quyết cho Wow6432Node. Khi tôi chạy ứng dụng, quá trình này là 64bit - như mong đợi.

Theo như tôi hiểu sau khi đọc nhiều bài đăng có liên quan trên SO. Trên Windows 64 bit, để làm cho [ProgramFilesFolder] được giải quyết thành "C: \ Program Files" và đường dẫn đăng ký vào đường dẫn thông thường (không phải dưới Wow6432Node). Tôi cần một MSI 64 bit riêng biệt. Mà tôi đang cố gắng để tránh - Đối với tôi, để có một riêng biệt 64-bit MSI chỉ cho [ProgramFilesFolder] và regsitry đường dẫn để giải quyết để sửa chữa vị trí là không đáng giá. Miễn là chương trình của tôi vẫn chạy 64-bit trên một Windows 64-bit, tôi không thực sự quan tâm về nó được cài đặt tại "C: Program Files Files (x86)" theo mặc định và một số giá trị đăng ký tồn tại tại Wow6432Node. Vì vậy, câu hỏi của tôi là, có những hậu quả khác khi tôi cài đặt một chương trình "AnyCPU" trên Windows 64 bit bằng cách sử dụng một MSI 32 bit khác với mặc định installDir là "C: \ Program Files (x86)) "và một số giá trị đăng ký được lưu trữ theo số Wow6432Node?

+1

Bạn có quan tâm đến bất kỳ cài đặt đăng ký nào được lưu trữ trong Wow6432Node đang được chương trình của bạn đọc thay vì vị trí gốc (nếu bạn đang đọc chúng)? –

+0

Tại sao không xây dựng cả hai, và có phiên bản 32 bit phát hiện một hệ điều hành 64-bit sau đó thực hiện Setup64.exe và bỏ thuốc lá nếu đúng? –

+0

@Scott Chamberlin, tôi chỉ cài đặt một giá trị cho sổ đăng ký. Buộc mã C# để đọc từ Wow6432Node khi chạy trong 64-bit là một cách dễ dàng hơn so với thực hiện một trình cài đặt khác. – sean717

Trả lời

2

Tác hại thực sự duy nhất có thể phát sinh là nếu chương trình của bạn cố gắng đọc các giá trị được lưu trữ trong giao diện đăng ký 32 bit. Tất nhiên nó sẽ không tìm thấy chúng khi chạy như một quá trình 64 bit. Nếu điều đó xảy ra thì bạn có thể chỉ cần sử dụng kiểu liệt kê RegistryView để bắt buộc đọc từ khung nhìn 32 bit. Nhưng tôi đoán rằng các thiết lập registry bạn đề cập có liên quan đến trình cài đặt.

Thực tế, kịch bản bạn mô tả là cách tôi triển khai ứng dụng của mình. Bởi vì tôi triển khai cả hai phiên bản 32 và 64 bit cho cùng một máy và vì chúng chia sẻ một số tệp, tôi cài đặt mọi thứ vào các tệp chương trình 32 bit. Và sau đó tất cả quyền truy cập đăng ký là chế độ xem 32 bit. Có thực sự không có thay thế nếu bạn muốn cả hai phiên bản 32 và 64 bit để chia sẻ các giá trị tương tự trong các phần chuyển hướng của registry.

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