2009-12-05 3 views
0

Inno Setup 컴파일러를 명령 줄/배치 파일에서 실행하면 파일 이름에 버전 정보가있는 exe가 생성됩니다.Inno Setup 컴파일러가 hudson에서 버전 정보를 올바르게 설정하지 않은 이유는 무엇입니까?

그러나 hudson (동일한 명령 줄)에서 실행하면 버전 정보가 표시되지 않습니다.

아마도 누락되었습니다.

이 것이 알려진 문제입니까?

This is the way I am doing it은 스크립트 파일에 있습니다.

#define FileVerStr GetFileVersion(SrcApp) 

편집 : ENV의 바르 모든 모든 사용자에 대해 설정되어

- 단지 내 로그인 - 그래서 서비스가 명령 줄 빌드가하는 모든에 액세스 할 수 있습니다.

편집 :이 해결책은 내 대답을 참조하십시오.

답변

0

정확히 어떻게 고정시켜야 하는지를 설명하는 방법이 확실치 않습니다.

GetFileVersion() 메서드는 소스 파일/설치 파일의 위치를 ​​결정하는 Inno 기능의 다른 부분과 동일한 기본 경로를 사용하지 않는 것으로 보입니다. 사용

같은 상대 경로는 :

// this is for determining what files get put into the install image 
[Files] 
Source: ..\Build\ForRelease\MyExeName.exe; DestDir: {app} 

#define SrcApp "..\Build\ForRelease\MyExename.exe" 
#define FileVerStr GetFileVersion(SrcApp) 

분명히 파일 이름/경로를 해결하기 위해 동일한 메커니즘을 사용하지 마십시오. 그래서 내가이 문제를 해결하기 위해 한 것은 버전 정보가 들어있는 exe 파일을 두 개의 다른 위치 (.. \ Build \ ForRelease 제외)로 복사하는 것입니다. hudson이 프로세스를 시작하고 inoo 스크립트가있는 경로 입니다. (나는 모든 것이 작동하도록 만드는 것이 어느 것이지 파악하기에는 너무 게으이다.)

다시 말하지만 이것은 배치 파일에서 잘 작동하지만 허드슨에서 발생하는 것은 아닙니다. 그것은 본질적으로 Inno가 어떻게 작동하는지와는 이상한 상호 작용입니다.

1

언급 된 기술을 사용하면 Windows에서 Hudson을 실행하고있을 가능성이 큽니다.

명령 줄에서 발생하는 것과 허드슨이하는 일 사이에 불일치가있을 때 허드슨이 Windows에서 서비스로 실행되고있는 경우가 많습니다. 이는 로그인 계정과는 다른 서비스 사용자로 실행 중임을 의미합니다.

서비스 사용자에 대해 설정되지 않은이 동작을 사용할 수 있도록 사용자 프로필에 정의한 환경 변수를 찾습니다.

+0

아, 네, 전에이 문제를 겪었습니다. 하지만 inno에서 누락 된 기능과 관련하여 어떻게 확신 할 수는 없습니다.아마도 환경 변수 때문에 도구가 제대로 실행되지 않을 수 있습니까? hudson을 내 사용자 계정에서 프로세스로 실행하고 어떤 일이 발생하는지 확인할 수 있습니다. 저는 그것이 실제로 그 원인 일 경우 문제를 진단하고 수정하는 방법이나 다른 방법에 대해 어떻게 생각하는지 정확하게 알지 못합니다. – Tim

+0

예,이 특정 프로젝트의 Windows 상자에서 hudson을 실행하고 있습니다. – Tim

+0

서비스에서 env 변수를 모두 사용할 수 있습니다. 로컬 사용자는 아무것도 설정되어 있지 않습니다. 과정을 산란하는 허드슨 이외에 나는 아무것도 다르지 않다. – Tim

3

처럼 "팀"말했다, 다음 상대 경로가 정의에 대해 예상대로 작동하지 않습니다.

#define MyAppVer GetFileVersion(SourcePath + "\..\Build\Release\MyExeName.exe") 
#if MyAppVer == "" 
    #error MyAppVer - Version information not found! 
#endif 

SourcePath를와 접두사에 의해 다음 상대 경로가 경로에서 시작됩니다 InnoSetup 스크립트 위치 함.

관련 문제