문제

Eclipse RCP 응용 프로그램을 만들고 있습니다.

다음 기사 "Daily Builds is Your Friend"에서 Joel의 조언을 따르고 있습니다.

http://www.joelonsoftware.com/articles/fog00000023.html

따라서 Eclipse RCP 제품을 작성하고 코드에서 단위 테스트를 실행하는 멋진 빌드 스크립트를 작성했습니다. 그런 다음 모든 결과는 개발자 목록에 배포됩니다 (일부 불평 후). 이제 다음 단계에서는 일반적으로 Inno 설정 컴파일러를 사용하여 수동으로 생성하는 설정 패키지를 만들고 싶습니다.

문제는 어떻게이 패키지를 자동으로 만들 수 있습니까? ANT에서 Inno 설정 파일을 자동으로 생성 한 다음 명령 줄에서 컴파일러를 호출 할 수 있지만 이것이 가능한지 모르겠습니다.

이 작업에 대한 팁이 있습니까? ANT에서 사용할 수있는 다른 설정 응용 프로그램이 있습니까?

도움이 되었습니까?

해결책

쉽게 이노 프로젝트는 일반 텍스트 파일이므로 Ant에서 Setupper 스크립트를 쉽게 편집 할 수 있지만 스크립트별로 별도의 작은 포함 파일을 만드는 것이 좋습니다. 설정 시작시 표시되는 버전+빌드 번호와 같은 "변수"를 저장할 수 있습니다.

이 라인을 셋업퍼에 넣으십시오.

#include "settings.txt"

그리고 settings.txt는 이와 같은 것을 가지고 있습니다

#define myver=xxx.xxx
#define tags

이제 빌드 스크립트에서 실제 설정퍼 코드를 터치 할 필요가 없습니다.

아래는 내 빌드 스크립트의 스 니펫으로 설정퍼를 컴파일합니다. ANT에서 배치 파일을 실행해야합니다.

<exec dir="." executable="cmd" os="Windows NT">
  <arg line="/c build.bat"/>
</exec>

샘플 배치 빌드. 바트 :

set isxpath="c:\program files\inno setup 5"
set isx=%isxpath%\iscc.exe
set iwz=myproj.iss
if not exist %isx% set errormsg=%isx% not found && goto errorhandler
%isx% "%iwz%" /O"%buildpath%" /F"MySetupper.exe" >>%logfile%
goto :eof

다른 팁

설치 프로그램을 자동화 할 때의 또 다른 좋은 트릭은 GetFileVersion 사전 처리기 (ISPP) 매크로. 그렇게하면 (바이러스) 파일의 버전 번호를 하드 코드 형식으로 복제 할 필요가 없습니다 (Tom 's와 같이 settings.txt) - 설치 프로그램 컴파일러는 파일의 버전 리소스에서 그런 식으로 읽습니다. 예 :

#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)

[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup

또한, 당신은 기호를 다음을 통해 컴파일러로 전달할 수 있습니다. /d CommandLine Switch, 예를 들어 :

iscc.exe /dSpecialEdition ...

그리고 나중에 이것들을 사용하십시오 ifdefs 다양한 유형의 설치 프로그램을 만들려면 (바보 같은 예제 다음) :

[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top