2015-08-17 14 views
6

DEFINE temelli farklı simgelerle, uygulamamın iki farklı sürümünü üretmek istiyorum. Tanımlamaya göre farklı kaynak dosyaları dahil etmeyi başardım ancak projemin varsayılan .res dosyasında MAINICON'dan kurtulmam.Koşullu olarak Delphi 2006 ile uygulama simgesini değiştirin

Ben şu satırla bir kaynak Version1.rc dosyasını ekledi:

MAINICON icon "resource\icons\Version1.ico" 

Ama IDE kullanarak MyProject derlemeye çalışırsanız hep aşağıdaki hatayı alıyorum:

E2161 Duplicate resource: Type 14 (ICON GROUP), ID MAINICON; File C:\MyProject\Version1.RES resource kept; file C:\MyProject\MyProject.RES resource discarded.

Denedim bir kaynak editörü kullanarak ve MAINICON'u silip MyProject.res'u düzenlemek için, ancak delphi otomatik olarak simgeyi içeren dosyayı yeniden oluşturuyor gibi görünüyor.

+0

IDE MyProject.res'i yönetmesine izin vermeyin. Oluşturma komut dosyanızın oluşturmasını sağlayın. Tabii ki, rutin olarak burada ve her yaptığımda, birden fazla insanın benimle aynı fikirde olmadığını öneriyorum. IDE'ye güvenmeyen, tekrarlanabilir bir yapım sürecine sahip olmak sadece benim gibi görünüyor ....... –

+0

@DavidHeffernan Şu anda bir compile_resources.bat betiğini çalıştırıyorum ve sonra da Tümünü Yapılandır'ı tıklıyorum. “IDE'deki proje grubumda. Ancak Delphi, bu süreçte MyProject.res'in üzerine yazıyor gibi görünüyor. Her şeyi derlemek için bir betiğe sahip olmanın değerini anlıyorum, ama bence bu biraz iş olurdu. Diğer yandan, IDE'de bir tanım belirleyebilmeyi ve doğru çıkışın oluşturulmasını da istiyorum. –

+0

Sadece IDE'den devralman gerekiyor. .dpr dosyasındaki '{$ R * .res} 'satırını kaldırın ve gitmekte fayda var. Öte yandan, IDE'ye bina yapmayı tercih etmeyi tercih ederseniz, o zaman bu tür görevlerle mücadele edeceksiniz. Yapmayı tercih edeceğiniz şey buysa, o zaman açıkçası size kalmış. –

cevap

4

David Heffernan'ın yorumları sayesinde bir çözüm buldum. Proje seçenekleri altında "sürüm bilgilerini ekleyin" Ben kaldırıldı IDE

  • ve proje dosyasında {$R *.res} kaldırıldı: Aşağıdaki ile sona erdi.
  • I dosya MyProject.res
  • I here tarif edildiği gibi önce, ıde sağlanan bilgi ile bir dosya versioninfo.rc ilave çıkarıldı.
  • Ben böyle görünüyordu, dosyaları icon_version1.rc ve icon_version2.rc ekledi: Ben böyle görünüyordu projemde, bir dosya Resources.pas eklendi
    LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 
    MAINICON icon "..\resources\icons\version1.ico" 
    
  • : Değiştirilmiş

    unit Resources; 
    
    interface 
    
    implementation 
    
    {$IFDEF VERSION1} 
        {$R ICON_VERSION1.RES} //from ICON_VERSION1.RC 
    {$ELSE} 
        {$R ICON_VERSION2.RES} //from ICON_VERSION2.RC 
    {$ENDIF} 
    
    {$R VERSIONINFO.RES} //from VERSIONINFO.RC 
    
    end. 
    
  • benim Ek kaynak dosyaları derlemek için mevcut komut dosyası compile_resources.bat. Ben VERSION1 tanımlarsanız

Şimdi benim uygulama simgesi icon_version1.ico, aksi icon_version2.ico sahiptir. Bir uyarı: Sürüm bilgisi (veya simgesi) değiştirilirse, değişiklikleri yansıtmak için compile_resources.bat'u çalıştırmam gerekiyor.

İlgili konular