NwSapSetupAdmin.exe 사용해서 SAPGUI Single File Installer 생성 방법
SAPGUI 설치 파일을 배포하는 방법 중 NwSapSetupAdmin.exe을 사용해서 Single Install 파일을 만들어 배포하는 방법입니다.
그냥 Support Portal에서 다운받은 거를 그대로 배포해도 되지만, 그러면 Logon Group으로 접속할 때 services 파일 등록을 수동으로 해줘야 하고, SAPGUILandscape.xml (과거 ini 파일) 도 수동으로 바꿔줘야 하죠.
BC나 시스템 담당자마다 따로 배치 프로그램을 만들어서 이 부분을 자동화 하는 분들도 있는데, 그것마저 좀 귀찮기도 하고..해서 이번에 한번 조사해 봤습니다.
저의 SAPGUI 타겟 버전은 770 PL10입니다.
한 번의 설치로 패치까지 적용되도록 하고,
services 파일에 sapms<SID> 자동 등록,
SAPGUILandscape.xml 자동 등록까지
자동화 하는 내용을 다루도록 하겠습니다.
그럼 시작하겠습니다.
1. 사전 준비
SAPGUI 770 설치파일 다운로드 (support.sap.com)
SAPGUI 770 PL10 패치파일 다운로드 (support.sap.com)
배포할 SAPGUILandscape.xml과 SAPGUILandscapeGlobal.xml 파일 (%APPDATA%\Roaming\SAP\Common\ 폴더에 있음)
2. 패치 적용
SAPGUI 설치 파일을 SAP Support Portal (support.sap.com)에서 다운받고 압축을 해제하면 BD_NW_7.0_Presentation_7.70_Comp._1_ 폴더가 만들어집니다.
이 상태로는 Patch Level 0의 패치가 적용되지 않은 최초 버전으로 설치됩니다.
폴더 하위 경로로 들어가서 다음 파일을 실행시킵니다.
.\BD_NW_7.0_Presentation_7.70_Comp._1_\PRES1\GUI\Windows\Win32\Setup\NwSapSetupAdmin.exe
Patch Server 버튼 클릭
Next
미리 다운받아 놓은 패치 파일 경로를 입력하고 Next
Next
Next
패치가 완료되면 아래 캡쳐처럼 Patch Level이 올라가 있습니다.
3. 패키지 생성
SAPGUI 770 PL10 설치만을 위한 새로운 패키징 작업을 할 겁니다.
New Package 버튼 클릭
Next
패키지에 포함시킬 제품 선택 후 Next
Package 이름 입력 후 Next
Command Line으로 설치할 때 사용할 패키지 이름 입력 후 Next
위의 패키지명과 같아도 되고 달라도 됩니다.
Close
패키지 생성이 완료되었습니다.
이 상태로 Single File Installer를 만들 수 있어요.
그러면 SAPGUI 770 PL10으로 설치가 됩니다.
간단하죠?
이제 응용 과정을 시작하겠습니다.
4. VBS 활용해서 설치 전/후 스크립트 실행
NwSapSetupAdmin.exe 의 강점 중 하나는 설치 전/후에 VBS(Visual Basic Script)를 작성해서 스크립트를 실행시킬 수 있다는 겁니다.
간단한 코딩으로 많은 부분을 자동화 할 수 있는 강력한 장점이죠.
Package Configuration 탭에는
- On Installation Start
- On Installation End
- On Uninstallation Start
- On Uninstallation End
- On Update Start
- On Update End
이렇게 구분을 해서 각 경우에 따라 VBS 코드를 심을 수 있습니다.
먼저 SAPGUI 설치가 시작되기 직전에 services 파일에 sapms<SID> 를 추가하는 스크립트를 넣어보겠습니다.
SAP에서 이거를 샘플로 줘가지고 편하게 할 수 있어요!
On Installation Start 탭 선택 후 Insert Script Sample
엔트리에서 Sample 4: Appending a line 을 선택하고 Insert 합니다.
그럼 Alpha 1901/tcp 를 services 파일에 등록하는 코드가 자동으로 만들어집니다.
저희가 할 일은 Alpha 1901/tcp 를 sapms<SID> 3601/tcp 로 바꿔주는 것 뿐입니다.
참 쉽죠?
'This scripting can be added to the 'On End UnInstall' section of a SAP GUI 710 package event script
'
'It appends a new line to the 'services' file.
'
NwEngine.Context.Log.Write "Event: Appending a new line to the services file"
strFile = NwEngine.Variables.ResolveString( "%WinSysDir%\drivers\etc\services" )
Set objTextFile = CreateObject("NwSapSetupATLCommon.TextFileParser")
If objTextFile.Parse( strFile ) Then
NwEngine.Context.Log.Write "Event: Parsing the file " & Chr(34) & strFile & Chr(34)
If Not objTextFile.DoesStringExist("Alpha 1901/tcp") Then
NwEngine.Context.Log.Write "Script action: Appending line 'Alpha 1901/tcp'"
objTextFile.AppendLine "Alpha 1901/tcp"
End If
objTextFile.Save( strFile )
Else
NwEngine.Context.Log.WriteWarning "Event: Could not open the file " & Chr(34) & strFile & Chr(34)
End If
이번에는 SAPGUI 설치가 완료되면 SAPUILandscape.xml 을 자동 등록해주는 스크립트입니다.
이번에도 샘플 코드로부터 시작할 거예요.
On Installation End 탭 선택 후 Insert Script Sample
엔트리에서 Copy a file in force mode 선택하고 Insert
그럼 샘플 코드가 만들어집니다.
샘플 코드를 보시면 아시겠지만, %SapSrcDir%\CustomerFiles\ 디렉터리의 파일을 Source로 지정할 수 있는데요.
\BD_NW_7.0_Presentation_7.70_Comp._1_\PRES1\GUI\Windows\Win32 경로에 CustomerFiles 폴더를 만들고, 미리 준비한 SAPUILandscape.xml 파일과 SAPUILandscapeGlobal.xml 파일을 넣어줍니다.
그리고 VBS 코드에 strSrcFile, strDstFile 경로를 이렇게 바꿔줍니다.
파일을 두 개 복사해야 하니까 코드에도 두 번 복사하도록 해주면 되겠죠?
strSrcFile = NwEngine.Variables.ResolveString("%SapSrcDir%\CustomerFiles\SAPUILandscape.xml")
strDstFile = "%APPDATA%\Roaming\SAP\Common\SAPUILandscape.xml"
NwEngine.Shell.CopyFileEx strSrcFile, strDstFile, vbTrue
strSrcFile = NwEngine.Variables.ResolveString("%SapSrcDir%\CustomerFiles\SAPUILandscapeGlobal.xml")
strDstFile = "%APPDATA%\Roaming\SAP\Common\SAPUILandscapeGlobal.xml"
NwEngine.Shell.CopyFileEx strSrcFile, strDstFile, vbTrue
5. Single File Installer 생성
이제 코드를 다 심었으니, 최종 단계인 Single File Installer 파일을 만들겠습니다.
패키지를 저장하고, 왼쪽 패널에서 패키지 우클릭 Compress to Single File Installer 를 누릅니다.
Next
파일을 생성할 경로 입력 후 Next
Close
그러면 이렇게 설치파일이 생성됩니다.
간단하죠?
이 파일을 실행시켜보면 SAPGUI770PL10만 선택 가능하도록 옵션이 하나 밖에 없습니다.
협업들이 설치할 때 헷갈리지 않고 좋겠죠?
설치가 완료되면 services 파일에 이렇게 코드에 심었던 Alpha 1901/tcp가 등록되어 있고,
SAPGUILandscape.xml도 등록되어 있는 걸 볼 수 있습니다.
이번에는 간단한 코드만 심었는데, VBS 만 잘한다면 더 복잡한 기능도 구현할 수 있어요.
그런 기능까지 필요할까는 모르겠지만...ㅎ