그것은 "myapp_setup_1_0_3708_19805.exe"같은에 생성 된 설정의 이름을 주요 실행 파일의 파일 버전을 읽고 설정 이노 설정을 얻을 수 있습니까?설치 파일 이름을 실행 파일 버전 번호에서 파생시킬 수 있습니까?
답변
당신은 이런 식으로 할 수 있어야합니다.
이(나는 최근에 시도하지 않은하지만이 방법으로 InnoSetup 사용되었을 때 확실히 2007 년에 다시 일이 약간의 변경이 필요할 수 있습니다 이노의 구문 경우 그 이후로 변경되었습니다.)
#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 등 물건이를 대체 할 그냥
setup_mytool_1_2_3_4.exe 완성 된 설치 관리자 AVF1, AVF2를 호출해야 다음 버전 1.2.3.4 인 경우 밑줄이있는 버전 번호의 점 (.) 파일 이름에 많은 점들을 감당할 수없는 경우 문제가 발생하지 않도록 점수 (_)를 지정하십시오.
; 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])
이 뭔가 다른 점을 교체 할 수있는 StringChange
기능을 사용하는 것 일을 훨씬 청소기 방법 : 당신이 네 가지 버전 번호를 표시하지 않으려면,
#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}
도를 (예를 들어, 당신이 그것을 대신 1.0.1.0
의 1.0.1
을 말하고 싶은), 다음으로 AppVersion
라인을 대체 할 수
#define NumberOfVersionPoints 3
#define AppVersion Copy(GetFileVersion(AddBackslash(SourcePath) + MainBinaryName), 0, NumberOfVersionPoints * 2 - 1)
버전 번호에 두 자리 요소가 포함되어 있지 않으면 (예 : "1.2.10.0"이 "1.2.1"로 잘못 변환 됨) 'NumberOfVersionPoints'코드가 작동합니다. – TypeIA
@TypeIA는 당신이 그 사건을 처리하는 방법에 대한 아이디어가 있습니까? – Thunderforge
나는 시간에하지 않았다,하지만 난 이노 메일 링리스트에 대한 해결책을 발견했다. 방금 아래에 새로운 답변을 올렸습니다. 시작해 주셔서 감사합니다. – TypeIA
GetFileVersion()
(다른 답변에 설명되어 있음)은 "Major.Minor.Rev.Build."형식의 문자열을 반환합니다. 당신이 문자열을 포맷 할 수 있도록 개별 요소에 액세스하려면 (당신은 단지 "는 Major.Minor"또는 "Major.Minor.Rev"를 원하는 경우 말) 자신, 당신은 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. 실행 파일 버전 정보 변경
- 2. 파일 설명자 번호에서 Java 소켓을 가져올 수 있습니까?
- 3. 델파이에서 apk 파일 아이콘, 버전, 이름을 받으십시오
- 4. 파일 버전 제품 버전
- 5. 파일 이름을 인자로 사용하여 jar 실행
- 6. Perl의 파일 핸들러에서 파일 이름을 찾을 수 있습니까?
- 7. 환경 설정 파일 이름을 변경할 수 있습니까?
- 8. 경로없이 실행 파일의 이름을 가질 수 있습니까?
- 9. 설치 후 파일 시작
- 10. 버전 제어 버전 별 파일
- 11. NSIS 설치 프로그램에서 배치 파일 실행
- 12. android 에뮬레이터에서 스크립트 파일 설치 및 실행
- 13. 설치 프로젝트 내부에서 SQL 스크립트 파일 실행
- 14. 바이너리 설치 파일
- 15. 파일 버전 정보
- 16. 파일 이름을 읽을 수 없습니다
- 17. 아이폰 어떻게 달 번호에서 월 이름을 얻을 수 있습니까?
- 18. Inno 설치 : 인터넷에서 파일 설치
- 19. 파일 이름을 바꾸고 이전 파일 이름을 Subversion의 이전 버전 파일로 바꿉니다.
- 20. DLL 파일 버전
- 21. 다른 시스템 (GCC)에 연결된 라이브러리로 실행 파일 설치
- 22. 메모리에서 실행 파일 실행
- 23. 통화 코드에서 통화 기호를 파생시킬 수 있습니까?
- 24. C++에서 구조체로부터 클래스를 파생시킬 수 있습니까?
- 25. INNO 설치 : 설치 패키지에 구성 파일 정의
- 26. 설치 파일 만들기
- 27. Grails WAR 파일 버전
- 28. SharpZipLib ~ 파일 버전
- 29. PHP 실행 파일 동시 실행
- 30. .bat 파일 설치
아름다운! 단지 따옴표로 MainBinaryName 필요, 잘 작동 :) 내가 전처리가 사용될 수 있습니다 몰랐 –
+1 (나는 당신의 대답을 편집). 내 대답을 제거 할거야. – mghie