2009-09-30 27 views
6

Tôi đã đấu vật với điều này một lúc rồi. Tôi có một ứng dụng sử dụng rất nhiều mem và thực sự sẽ được hưởng lợi từ việc là LargeAddressAware.Cách đặt LARGEADRESSAWARE cho một ứng dụng ClickOnce?

Sự cố ngắn gọn: Với cờ LAA, ứng dụng sẽ không bắt đầu.

kết quả thực nghiệm:

1) Tôi có một kịch bản phát hành có thể chạy toàn bộ xuất bản ClickOnce, sau đó lại có dấu hiệu thực thi và dlls, sau đó tái tạo lại biểu hiện, dấu hiệu nó vv

2) Chạy kịch bản mang lại cho tôi một ứng dụng, cài đặt và hoạt động độc đáo

3) Thêm này đến sau xây dựng ngắt ứng dụng:

editbin /LARGEADDRESSAWARE <path>/obj/Publish/app.exe 

(vâng, tôi biết, chúng tôi có một cấu hình build đó được gọi là Publish - ngu ngốc - nhưng hoạt động ...)

Thông báo lỗi tôi nhận được là:

Hoạt \ betabox \ appbeta \ ứng dụng .ứng dụng dẫn đến ngoại lệ. Tiếp theo thông điệp thất bại đã được phát hiện:

+ Mạnh tên chữ ký không hợp lệ cho app.exe lắp ráp này.

Cả tệp kê khai và bản sao của tôi được ký bởi một chứng chỉ ký mã hợp lệ. Và kịch bản hoạt động tốt khi cờ không được thiết lập.

Tôi cũng đã thử không có tập lệnh của mình, chỉ với lệnh editbin sau khi tạo và xuất bản thông qua lỗi VS - cùng một lỗi.

Vì vậy - hoàn toàn không thể xuất bản ứng dụng có LARGEADRESSAWARE được đặt qua ClickOnce?

Cảm ơn!

Trả lời

5

Đã giải quyết!

Got sự giúp đỡ từ Kira trong các diễn đàn ClickOnce: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/b008087c-45f8-4de6-b8f5-f34fddb29c8c/?prof=required

Giải pháp: Các EXE có được tái ký hợp đồng với một tên mới mạnh mẽ sau khi lá cờ LAA đã được thiết lập.

Làm thế nào để làm điều này: Trong hậu xây dựng, cờ được thiết lập bởi:

cd $(ProjectDir) 
editbin /LARGEADDRESSAWARE obj/$(ConfigurationName)/app.exe 

Và sau đó, cũng trong bài-xây dựng, các exe có được tái ký :

sn -Ra obj\$(ConfigurationName)\app.exe PublicPrivateKeyFile.snk 

Đây là khóa học giả định rằng PublicPrivateKeyFile.snk là khóa ký mã và đường dẫn của dự án Visual Studio.

Vấn đề của tôi là tôi đã được tái ký hợp tất cả dlls/người yêu cũ sau khi xây dựng sử dụng:

for /R %BIN_DIR% %%f in (*.dll) do signtool sign /a /i "Thawte" /t http://timestamp.verisign.com/scripts/timstamp.dll "%%f" 
for /R %BIN_DIR% %%f in (*.exe) do signtool sign /a /i "Thawte" /t http://timestamp.verisign.com/scripts/timstamp.dll "%%f" 

Nhưng điều này không cập nhật tên mạnh mẽ, chỉ cần ký vào exe vì nó là.

Hy vọng điều này sẽ giúp ai đó!

+0

Cảm ơn bạn! Điều này đã giúp tôi rất nhiều cố gắng tìm ra lý do tại sao thay đổi 'editbin' của tôi không được áp dụng khi thực hiện triển khai ClickOnce. Tôi đã không nhận ra rằng ClickOnce xuất bản bằng cách sử dụng các tệp trong thư mục ** obj ** và KHÔNG sử dụng thư mục đầu ra ** bin **. – Nick

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