2010-08-14 30 views
5

tôi về cơ bản có cùng một vấn đề như câu hỏi này: Embed multiple icons in WPF EXETự động nhúng nhiều biểu tượng trong một NET Executable

My .NET 2.0 WinForms ứng dụng hiện có này khi bạn bấm vào nút "Change Icon" trong explorer:

EVEMon Single Icon http://www.richard-slater.co.uk/wp-content/uploads/2010/08/EVEMonIconsWhatIHave.png

những gì tôi muốn thấy, và với một số hack về theo đề nghị của các bài viết ở trên tôi có được điều này:

EVEMon Multiple Icons http://www.richard-slater.co.uk/wp-content/uploads/2010/08/EVEMonIconsWhatIWant.png

Tuy nhiên, quá trình nhận được tất cả thông tin phiên bản cho hội đồng bị mất. Tôi cần phải duy trì Thông tin Phiên bản trong quá trình lắp ráp vì quá trình tự động cập nhật của tôi dựa trên điều này để xác định phiên bản đã cài đặt của ứng dụng.

Tôi cũng xây dựng ứng dụng thông qua quy trình tích hợp liên tục vì vậy tôi không muốn có bất kỳ bước nào yêu cầu can thiệp thủ công, vì vậy điều này có thể theo cách tự động không?

+1

Không thêm các biểu tượng như tài nguyên đủ? – Joey

+0

Việc thêm các biểu tượng dưới dạng Tài nguyên .NET (.resx) sẽ không hiển thị chúng cho Windows Explorer. –

Trả lời

7

Tôi vừa tạo một công cụ đơn giản để thực hiện chính xác việc này mà không phải gây rối với các tệp .res. Nó là một tiện ích nhỏ mà bạn có thể sử dụng như một phần của sự kiện Post-Build của bạn và cho phép bạn thêm tất cả các tệp biểu tượng trong một thư mục cụ thể vào assembly của bạn. Nếu chúng ta giả định rằng bạn có một biểu tượng thư mục trong thư mục chính của dự án của bạn, bạn có thể thêm các hậu xây dựng sự kiện sau đây:

C:\path\to\InsertIcons.exe $(TargetPath) $(ProjectDir)icons 

Mô tả thêm và tải về có thể được tìm thấy tại http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/

+1

Ngọt ngào. Tôi đặc biệt đánh giá cao rằng InsertIcons là mã nguồn mở và trên [github] (https://github.com/einaregilsson/InsertIcons). – ulatekh

+0

Cảm ơn vì tiện ích. Làm việc như một say mê. – DonBoitnott

2

Điều này Code Project article có hướng dẫn về cách thực hiện việc này.

Về cơ bản, bạn thêm các tài nguyên biểu tượng khác vào dự án.

+0

Có vẻ hứa hẹn, tôi sẽ có một ngày mai đi xem liệu điều này có làm mọi thứ tôi cần không. –

+0

Bài viết đó không giải quyết được các vấn đề về phiên bản của anh ấy, dường như nó đã ngăn không cho tệp kê khai được nhúng vào. – insipid

3

Bài viết được ChrisF đề cập cũng sẽ xóa thông tin phiên bản lắp ráp của bạn. Khi bạn làm theo hướng dẫn đó, bạn có thể muốn thử sử dụng phương pháp hậu xây dựng được mô tả ở đây http://blogs.msdn.com/b/cheller/archive/2006/08/24/718757.aspx để nhúng tệp kê khai.

EDIT:

Đó là "Phương pháp # 2 - 'Chung' Cách tiếp cận (sử dụng mt.exe)"

+0

Cảm ơn bạn đã xem xét thêm cho tôi, tôi sẽ xem hướng dẫn CodeProject và blog xem liệu tôi có thể xây dựng quy trình tự động hay không. –

1

Đối với tôi, giải pháp đơn giản nhất để vấn đề đó là tạo ra một tập tin res, mà chỉ bao gồm các biểu tượng bạn cần (và lưu trữ chúng theo thứ tự ưa thích của bạn), vô hiệu hóa biểu tượng chính trong thuộc tính dự án và hợp nhất gói biểu tượng đã chuẩn bị trước đó (tệp .res) với tệp .exe cuối cùng của bạn, thực hiện trong sự kiện sau xây dựng. Mặc dù, nếu quá trình này có thể được hoàn toàn tự động và giữ cho dữ liệu tệp kê khai của bạn không thay đổi, nó cần bước cuối cùng một công cụ bên ngoài (ResHacker), cho phép bạn thực hiện công việc sáp nhập tệp .res qua dòng lệnh (tất nhiên, Visual Studio) có thể làm điều này, nhưng theo tôi biết không có giao diện dòng lệnh để đạt được nó - nếu tôi sai, hãy sửa tôi).

  1. Tải file res trống (http://www.codeproject.com/Tips/160885/How-to-Embed-Multiple-Icons-and-Color-Animated-Cur.aspx) và thêm nó vào dự án của bạn nộp

  2. Điền res thêm trước đó với các biểu tượng của bạn

  3. Di chuyển biểu tượng chính từ dự án của bạn (Dự án -> Thuộc tính)

  4. Tải xuống công cụ ResHacker (http://www.angusj.com/resourcehacker/) và đặt ở bất cứ đâu bạn muốn

  5. Thêm dòng tương tự như của bạn sự kiện sau xây dựng:

    if $(ConfigurationName) == Release (
        ..\..\..\..\..\Tools\ResHack\ResHacker.exe -add $(TargetPath), $(TargetPath), $(ProjectDir)Properties\AssemblyWin32.res ,,, 
    ) 
    

Đó là tất cả.Mỗi khi bạn biên dịch dự án của bạn trong chế độ phát hành, bạn sẽ nhận được một biểu tượng mong muốn đến tệp .exe đích của bạn.

+0

Điều này có giữ lại tệp kê khai ứng dụng không? –

+0

Vâng, đúng vậy. Hơn nữa công cụ ResHacker cho phép bạn kiểm soát toàn bộ dữ liệu tài nguyên có trong tệp .exe của bạn, ví dụ: thay vì hợp nhất các tệp .res khác vào đó, bạn chỉ có thể thêm một số biểu tượng hoặc thay thế nó, bất cứ điều gì bạn muốn làm. Lưu ý rằng một tính năng chính của công cụ này là khả năng sử dụng dòng lệnh. –

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