Ana çalıştırılabilir dosyanın dosya sürümünü okumak ve oluşturulan kurulumun adını "myapp_setup_1_0_3708_19805.exe" gibi bir şeye ayarlamak için Inno Setup'ı almak mümkün mü?Kur dosya adı yürütülebilir dosya sürüm numarasından türetilebilir mi?
cevap
Böyle kendisine mümkün olmalıdır.
(Geçenlerde bu denemedim ama bu şekilde InnoSetup kullanıyordum zaman kesinlikle 2007 yılında geri çalıştı Bazı küçük değişiklikler gerekebilir Inno en sözdizimi eğer o zamandan beri değişti.)
#define MainBinaryName "MyMainFile.exe"
#define SetupBaseName "setup_mytool_"
#define AppVersion GetFileVersion(AddBackslash(SourcePath) + MainBinaryName)
#define AVF1 Copy(AppVersion, 1, Pos(".", AppVersion) - 1) + "_" + Copy(AppVersion, Pos(".", AppVersion) + 1)
#define AVF2 Copy(AVF1, 1, Pos(".", AVF1 ) - 1) + "_" + Copy(AVF1 , Pos(".", AVF1 ) + 1)
#define AppVersionFile Copy(AVF2, 1, Pos(".", AVF2 ) - 1) + "_" + Copy(AVF2 , Pos(".", AVF2 ) + 1)
[Setup]
OutputBaseFilename={#SetupBaseName + AppVersionFile}
MyMainFile.exe vb şeyler yerine sadece orada
setup_mytool_1_2_3_4.exe bitmiş yükleyici AVF1, AVF2, çağırmalıdır sonra sürüm 1.2.3.4 olduğunu ise altındaki sürüm numarasına (.) Bir dosya adında çok fazla nokta ile baş edemeyen şeylerle ilgili sorunlara yol açmamak için puan (_).
; Get the App Version from Main Program
; This Is Full App Version Major.Minor.Build.Revision
; Store First 3 Parts of Version in ShortAppVersion to be used for SBS Assembly Installation Major.Minor.Build
#dim Version[4]
#expr ParseVersion("MainProgram.exe", Version[0], Version[1], Version[2], Version[3])
#define AppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2]) + "." + Str(Version[3])
#define ShortAppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2])
bu başka bir şeyle noktalar değiştirilmesine olanak StringChange
fonksiyonunu kullanarak içerir yapmanın Daha net bir yol: Eğer dört sürüm numaraları göstermek istemiyorsanız,
#define MainBinaryName "MyMainFile.exe"
#define SourcePath "Path/To/File"
#define SetupBaseName "setup_mytool_"
#define AppVersion GetFileVersion(AddBackslash(SourcePath) + MainBinaryName)
#define AppVersionFile StringChange(AppVersion, ".", "_")
[Setup]
OutputBaseFilename={#SetupBaseName + AppVersionFile}
Ayrıca (örn bunu yerine 1.0.1.0
ait 1.0.1
söylemek istiyorum), aşağıdaki ile AppVersion
satırı değiştirebilirsiniz:
#define NumberOfVersionPoints 3
#define AppVersion Copy(GetFileVersion(AddBackslash(SourcePath) + MainBinaryName), 0, NumberOfVersionPoints * 2 - 1)
'NumberOfVersionPoints 'kodu yalnızca sürüm numarası iki basamaklı bir öğe içermiyorsa çalışır (örneğin," 1.2.10.0 "yanlış şekilde" 1.2.1 "e dönüştürür). – TypeIA
@TypeIA Bu davanın nasıl ele alınacağına dair bir fikrin var mı? – Thunderforge
O zaman yapmadım, ama Inno posta listesine bir çözüm buldum. Aşağıda yeni bir cevap gönderdim. Başladığın için teşekkürler! – TypeIA
GetFileVersion()
(diğer yanıtlarda açıklanmıştır), "Major.Minor.Rev.Build." Formunun bir dizesini döndürür. Tek tek öğelere erişmek istiyorsanız, dizeyi kendiniz biçimlendirebilirsiniz ("Major.Minor" veya "Major.Minor.Rev" istiyorsanız), aşağıdaki yaklaşımı kullanabilirsiniz: jrsoftware.innosetup mailing list:
#define VerMajor
#define VerMinor
#define VerRev
#define VerBuild
#define FullVersion=ParseVersion('PathTo.exe', VerMajor, VerMinor, VerRev, VerBuild)
#define MyAppVersion = Str(VerMajor) + "." + Str(VerMinor)
- 1. Sürüm numaralarının, .so dosya adı
- 2. Yürütülebilir sürüm,
- 3. Dosya adı, dosya adı olmadan nasıl kurtulur?
- 4. Dosya tanıtıcısından dosya adı alın
- 5. Adobe Reader tam yolu nasıl alınır (yürütülebilir dosya adı dahil)?
- 6. Hata ayıklama yürütülebilir dosya IDA
- 7. Girdi dosya türünden dosya adı al Angular2
- 8. Paperclip vestal_versions ile dosya sürüm
- 9. Sürüm bilgisi kurulum çıktı dosya adı nasıl eklenir?
- 10. iOS: dosya adı seçildikten sonra dosya gösteriliyor
- 11. Dosya adı dosya adından nasıl çıkarılır?
- 12. servlet dosya yükleme dosya adı kodlaması
- 13. Dosya adı + ofseti
- 14. ProjectItem dosya adı
- 15. HttpURLConnection indirilen dosya adı
- 16. Benzersiz dosya adı oluştur
- 17. MultipartMemoryStreamProvider: dosya adı?
- 18. Yürütülebilir dosya olarak derlenmiş birim yolu
- 19. Qt Uygulaması için yürütülebilir dosya nasıl oluşturulur?
- 20. MailMessage Aksanlar ile dosya adı
- 21. Dize yolundan dosya adı alın?
- 22. Boşluklu dosya adı/f işleme
- 23. genişletilmiş sınıfın dosya adı olsun.
- 24. php Eşzamanlı dosya adı yüklerken
- 25. Python logger dinamik dosya adı
- 26. Telerik RadGrid ihracat dosya adı
- 27. Dosya adı girişini Powershell'de doğrulayın
- 28. Razor Layout, dosya adı _ViewStart.cshtml
- 29. Flash Builder'da çıktı dosya adı
- 30. Java'da dosya adı çalıştırılsın mı?
güzel! iyi çalıştı, sadece mainBinaryName tırnak içinde :) (cevabını düzenledim) –
+ 1, önişlemci bunun için kullanılabilir olduğunu bilmiyordum. Cevabımı kaldıracak. – mghie