SAP BC

NwSapSetupAdmin.exe 사용해서 SAPGUI Single File Installer 생성 방법

덩덩 2023. 3. 22. 20:49

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 잘한다면 복잡한 기능도 구현할 있어요.

그런 기능까지 필요할까는 모르겠지만...