기존 Application이나 Patch등은 별다른 조건 없이 설치 진행이 되었기 때문에, 설치 프로그램의 기본값만으로도 충분하게 패키지화 했다. 하지만, 이번에는 본격적으로 End-User를 향한 제품을 패키지 하는 작업이기 때문에, 그렇게 단순하고 쉽게 패키징을 할 수 없었다.

물론 아래의 처리 방법들은 현재까지 패키징을 하면서 받았던 각종 정보와 설정 값들일 뿐, 원하는 형태로 성공적인 패키지 한 것은 아니다.

단순하게나마 패키지를 할 때 도움이 될 것 같아 기록에 남긴다.

1. NSIS ( Nullsoft Scriptable Install System )

Nullsoft에서 제작한 Installer System 프로그램. 100%에 가깝게 스크립트기반이며, 스크립트로 처리가 불가능한 경우 DLL 등을 이용하여 외부 모듈을 통해 플러그인의 개념처럼  추가할 수 있다. 하지만, 아직 그 부분까지는 접근조차 하지 못했으며, 특히 매 버전마다 변경점 마다 스크립트 수정 작업의 부하가 너무 커서 제작 중 도중에 포기하였다.하지만, 단순하고 직관적으로 패키지를 말때는 상당히 도움이 될 것 같다.

준비물.

  1. NSIS( Nullsoft Scriptable Install System) 컴파일러.
    제일 중요한 부분. 이 제품은 Open Source 라이센스를 따르며 무료로 배포되고 있다.
    http://nsis.sourceforge.net/Main_Page
    에서 Download 부분을 통해 다운 받을 수 있다.
  2. HM NIS Edit
    NSIS의 동작은 모두 Script를 컴파일 한 뒤, 나온 결과물로 동작한다. 즉 Script 파일과 실제 배포할 파일들만 있으면 간단하게 만들 수 있다. 진짜 “메모장” 하나 열고 그 안에서 Text 파일로 된 Script 파일을 구성한 뒤, 컴파일 하면 된다. 하지만, 이제 처음 NSIS를 돌려보시거나, NSIS 개념을 막 잡아가는 초보(필자도 포함)에게는 버겁기 그지 없다. 이를 그나마 많이 편하게 제공하는 UI가 바로 HM NIS Edit 프로그램.
    이 역시 무료이며, 불편함이 없지않아 있지만, 그 작은 불편을 뛰어 넘는 다양한 기능들이 NSIS를 조금은 더 쉽게 다가게 해준다.
    해당하는 프로그램은
    http://hmne.sourceforge.net/
    에서 볼 수 있으며, 다운로드 받아 설치하면 된다.

 

개념을 익히기 좋은 사이트들.

사실 NSIS 는 개념익히는데 상당히 어렵다. 물론 MSI 작성 방법보다는 조금은 더 직관적이고 단순하다. 그러나 작은 개념조차 익히기 어려운 건 사실이며, 대부분의 설명 사이트들은 영어로 되어 있다. 그래도 국내에서 NSIS로 삽질하시던 많은 프로그래머들이 있고 그들의 흔적을 잘만 찾아 댕겨도 의외의 많은 정보들을 얻을 수 있다.

  1. Kipple 사이트
    꿀뷰(HoneyView)라는 이미지 뷰어 프로그램으로 유명세를 타고 있던 분. 이 분이 만든 제품들의 패키지를 NSIS로 했으며, 그에 따라 다양한 기능등를 자체적으로 구성했다. 그래서 그 속에서 묻어 나오는 각종 팁들이나 예제들을 제공한다. 특히 예제로 담은 nsissample.zip 파일은 받드시 받고 그 안의 스크립트 내용을 잘 확인해보록 한다.
    http://www.kippler.com/doc/nsis/
  2. 게으른 엔지니어가 사는법 ~~~~ 사이트.
    NSIS 에는 몇가지 UI가 있는데, 과거 Winamp 시절에 사용한 classic 방법 부터 현재는 MUI2 라는 방식까지 여러가지가 존재한다. 필자의 경우 Windows Installer 3.1 UI랑 비슷하게 나오게 하는 MUI2를 주로 사용하는데 간혹 관련 예제들을 Google에서 찾으면 classic 시절에 짰던 방법으로 많이 나온다. 그래서 이래저래 방황을 많이 했는데, 아래의 사이트에서 많은 도움을 얻었다.
    http://www.cipher.pe.kr/tt/cipher/154?category=6
  3. 그 외..
    http://innara.springnote.com/pages/3828755
    http://jgh0721.tistory.com/category/프로그래밍/NSIS

 

구성 순서.

1. 기본 도구 설치 준비.

제일 먼저 NSIS 컴파일러와 HS NIS Edit를 설치한다.
이 두가지는 반드시 설치해서 진행하도록 한다.

2. 작업 폴더 준비.

인스톨러를 준비하기 위한 적절한 폴더를 하나 마련한다.
보통 이 폴더에 배포하기 위해 필요한 내용도 적절하게 보관하여 정리하도록 한다.
실행에 필요한 각종 내용들 (.NET 기준으로 bin\Debug 혹은 bin\Release 같은 폴더)을 담은 폴더와,
기타 부가적으로 필요한 내용들 ( 인스톨러 커스터마이징을 위한 이미지나 아이콘 등)을 담은 폴더,
그리고 별도로 복사할 때 사용되는 잡스러운 내용을 담은 폴더를 나누어 정리한다.

folderlists

3. 설정 파일 생성 혹은 템플릿 이용.

HM NIS Edit에서 새로 만들기를 하면, 마법사를 이용하여 기본적인 NSIS용 설정파일을 하나 만들어준다. 하지만, 이 방법으로 만들게 되면 결과물이 거의 완전 영어판으로 나오기 때문에,영어 알레르기가 있으신 분은 무척 애매해지는 경우가 발생할 수 있다.
이 경우에는 앞서 언급한 Kipple 님의 홈페이지에서 NSIS 예제를 다운로드 받는 것이다.
그 파일을 그대로 활용해도 된다.  물론 바로 받아와서 사용하려고 하면 컴파일할 때 오류가 발생하는데,
NSIS를 Kipple님이 수정한 버전으로 교체하거나, 아니면 설정 파일에서 오류나는 부분을 주석 처리해도 된다.
여기서는 Kipple님의 설정파일을 기준으로 설명한다.

4. 설치 파일 설정하기.

My_CopyFile 라는 함수를 찾는다. Ctrl + F를 눌러 저 Text로 찾으면 된다.
다른 부분은 그대로 두면 되고, SeachOutPath와 File 이라는 명령어가 있는 부분을 대거 수정한다.

filelist1

설치 결과물를 잘 고민하도록 하자. 만일 아래와 같은 형태로 구성하고 싶은 경우라고 가정을 하자.
filelist2

Program Files 밑에 Easy Connect 라면, 일단 그 부분은 그대로 두고,
그 폴더 안에 복사될 파일들을 File 이라는 명령을 사용해 넣도록 하자.
지금 설치될 파일은 모두 Binaries 폴더에 있으니 그 경로의 파일들을 나열하면 된다.

File ".\Binary\bin\Debug\\DevExpress.XtraTreeList.v10.1.xml"
File ".\Binary\bin\Debug\\DevExpress.XtraTreeList.v10.1.dll"
File ".\Binary\bin\Debug\DevExpress.XtraRichEdit.v10.1.xml"
File ".\Binary\bin\Debug\DevExpress.XtraRichEdit.v10.1.dll"
File ".\Binary\bin\Debug\DevExpress.XtraPivotGrid.v10.1.xml"
…………

자 다음은 Cur 부분. 일단 File 이 쭉 나열된 목록들 맨 끝에 다음과 같은 줄을 넣는다.

SetOutPath "$INSTDIR\Cur"

그리고 Cur 폴더에 들어갈 파일들을 위의 FILE 처럼 쭉 아래로 나열한다.

원리는 간단하다 SetOutPath 라는 것을 이용해 폴더를 구축한다. 여기서 시작점이 바로 "$INSTDIR"이 된다.
그 하위에는 당연히 \ 가 붙고 그 하위에 폴더를 만들면 된다.

5. 조건 별로 설치되어야 할 파일 설정.

지금 배포할 응용 프로그램은 .NET Framework 2.0 을 기반으로 구성되어 있다.
그러므로 반드시 미리 .NET Framework 2.0이 설치되어 있어야 하는데, 이를 체크한 뒤에 해당하는 프로그램이 설치되어 있지 않으면 설치해야 할 것이다.
아래의 코드로직을 설명하기 전에, 찾는 방법을 간단하게 설명하면 아래와 같다.

  1. 레지스트리에서 HKey_Local_Machine\SOFTWARE\Microsoft\.NETFramework 부분의 키를 따라들어간다.
  2. 키 안에 값들 중 InstallRoot 라는 항목을 열어 본다.
  3. 그 안의 값에 맨 뒤에 .NET 버전을 붙여본다.
    보통 .NET 2.0 이 설치되어 있다면 "C:\Windows\Microsoft.NET\Framework\2.0.50727" 라는 폴더가 있고, 그 안에 파일들이 있다.
  4. 위의 경로에 파일이 있는지 확인한다.

위의 단계에서 1 부분에서 오류가 있다면, 즉 레지스트리에 값이 없다면 .NET Framework가 설치되어 있지 않다는 의미. 그러므로 .NET Framework 2.0 을 그냥 설치하면 된다. 만일 이 부분이 있다면 .NET Framework 가 설치된 폴더에 파일들이 있는지 확인한다. ( Windows 설치 폴더가 생뚱 맞은데일 수도 있다. - E:\Windows 등등 ). 만일 파일들이 없다면 다른 .NET Framework 는 설치되어 있지만, 2.0은 설치되어 있지 않다는 것이다.

이런 로직으로 찾아보도록 한다.

제일 먼저 .NET Framework 가 설치되어 있는지 아닌지 여부를 저장하기 위한 전역 변수를 하나 설정한다.

Var IsHadNetFramework20

이 변수에 "t"가 들어 있으면 설치되어 있는것이고, 비어 있으면 설치되지 않은 것으로 정한다.

그리고 난 뒤, 체크하는 로직을 위한 Function을 만든다.

Function CheckAlreayInstalledSolutions

    ; .NET Framework 2.0 설치 여부 체크
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\.NETFramework" "InstallRoot"
   StrCpy $IsHadNetFramework20 ""
   StrCmp $R0 "" notFound foundIt

   foundIt:
           IfFileExists "$R0\v2.0.50727\*.*" VersionFound notFound
   VersionFound :
           StrCpy $IsHadNetFramework20 "t"
   notFound:


FunctionEnd

함수는 Function {이름} 으로 시작해서 FunctionEnd 로 끝난다.
그 안에 필요한 로직을 넣으면 된다.

일단 한 줄 씩 끄집어 보도록 하자. 

함수의 맨처음 줄은 ";" 가 맨 앞에 붙어 있는데, 주석이다. "#" 을 써도 된다.

ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\.NETFramework" "InstallRoot"

ReadRegStr은 특정 레지스트리 에서 값을 가져오는 것이다.
HKLM은 HKey Local Manchine을 기준으로 "SOFTWARE\Microsoft\.NETFramework" 에서 "InstallRoot" 라는 곳에서 문자열을 읽어온다. 이렇게 읽어온 문자열은 $R0 이라는 임시변수에 저장한다는 것이다.

StrCpy $IsHadNetFramework20 ""

별다른 의미는 없고 전역 변수로 설정한 변수를 초기화 하는 것이다. 그를 위해서 StrCpy라는 명령을 썼는데, 다른게 아니고 바로 문자열 복사같은 것이다. "" 를 복사했으니 완전 빈 변수가 되었다고 보면 된다.

StrCmp $R0 "" notFound foundIt

이 부분 부터 암호화의 느낌을 받은 문장. 다른 의미는 아니고 $R0 과 "" 를 비교한다는 것이다.
그 결과에 따라서 만일 같으면 notFound로 같지 않으면 foundIt 으로 이동한다는 의미.
굳이 Basic 스타일로 번역하면..

if $R0 == "" 
Then 
  Goto notFound
Else
  Goto foundIt

이 NSIS의 스크립트에는 IF라는 개념이 없는데 그와 유사한 로직으로 사용하는 것이 바로 이 StrCmp.
이 것을 활용하는 것으로 보면 된다.

foundIt:

암호화에 일조하는 부분인데, 바로 라벨이다. 즉 goto 해서 이동할 라벨을 의미하는 것.

   IfFileExists "$R0\v2.0.50727\*.*" VersionFound notFound

왠지 IF 스러운 내용인데, 이 If 는 여러가지로 활용가능한 If 가 아니라, 오로지 파일이 있는지 여부를 확인하기 위한 로직이다. .NET 2.0 파일들이 있는지 확인한다. 만일 파일들이 있다면 VerisonFound로 goto 하고 없다면 notFound 로 goto 한다.

위의 로직에서는 Check 하는 것이므로, 이젠 설치하는 로직을 만들도록 하자.

Function InstallNETFramework20

; .NET Framework 2.0이 설치되어 있지 않으면 설치
   StrCmp $IsHadNetFramework20 "t" DoInstllDotNet PassInstall
   DoInstllDotNet:
       DetailPrint "Install .NET Framework 2.0"
       ExecWait '".\AddonPackage\installdotnet.cmd"' $1
       SetRebootFlag true
       Sleep 20000
    PassInstall:

FunctionEnd

위에서 언급안된 부분을 설명하도록 한다.
DoInstallDotNet 이라는 라벨이 있는 부분을 보도록 한다.

DetailPrint "Install .NET Framework 2.0"

다른 의미는 없고 인스톨 설명 줄에 "Install .NET Framework 2.0"를 출력하는 것 뿐이다. 설치 화면 중에 지금 무엇이 설치되고 있는지 설명을 출력되는 창에 보이는 문구라고 보면 된다.

ExecWait '".\AddonPackage\installdotnet.cmd"' $1

이 부분이 중요한데, '".\AddonPackage\installdotnet.cmd"' 라는 문자을 Shell을 써서 실행한다는 의미이다. 단 실행은 하는데, 단지 실행이 완전히 종료될 때까지 대기를 하겠다는 의미이다. 그리고 최종적으로 실행 결과를 $1에 출력하겠다는 것이다. 기다릴 필요가 없는 경우에는 Exec 를 쓰면 된다.

SetRebootFlag true

일종의 옵션인데, 설치 후 맨 마지막에 Reboot 하겠다는 의미이다. 종종 설치 프로그램에서도 특정 프로그램을 설치한 뒤 자동으로 재시작하는 경우를 많이 보는데, 바로 그럴 때 사용하는 옵션이다. 만일 .NET을 설치하지 않는 경우에는 Reboot를 할 필요가 없으니, 설치할 때만 이 옵션을 true로 설정하는 것이다.

Sleep 20000

설치 중에 다른 프로그램을 설치하게 되면 HDD의 Access Time이라는 것이 있어서, 약간의 대기가 필요할 수 있다.
여기서는 20초 정도로 설정했다. 1/1000 초이므로 1000이 1초. 즉 20초 대기라는 의미.

 

일단 설치되어 있는지 여부를 체크하는 함수와 그 체크한 결과 값을 기준으로 설치하는 로직을 담은 함수를 제작했다.
이제 이 함수를 호출하는 로직을 넣어보도록 한다.

먼저 체크.

설치하기 전에 맨 처음 부분에서 실행한다.
윈도우의 EventHandler 같은 기능들을 제공하는데, 그 중 인스톨러 시작할 때 걸리는 함수는 이것이다.

Function .onInit
     ………
FunctionEnd

저 함수 안에 다음과 같음 문장을 넣는다.

Call CheckAlreayInstalledSolutions

 

이제 마지막으로 남은 것은 설치하는 함수.
설치할 때 넣어주거나, 아예 시작할 때 넣어도 된다. 여기서는 설치할 때 넣을 수 있도록,
앞서 보여준 My_CopyFile  라는 함수 안에다가 다음과 같은 문장을 넣는다.

Call InstallNETFramework20

 

6.사용자 정의 화면 넣기.

사용자 정의 페이지를 넣으려면 MUI2 에서 제공하는 페이지 적용하는 방법부터 확인해야 한다.

pages

대략 보면 알겠지만, "!insertmacro" 라는 키워드를 이용해 MUI_PAGE_ 로 시작하는 페이지들을 나열한다.
바로 원하는 페이지를 넣는 방법이다. 이 방법은 MUI2 에서 만들어진 화면을 끼워넣는 것으로써,
저 넣는 순서를 바꾸면 실제 나오는 화면이 순서도 바뀌게 된다. 그리고 뒤쪽에 MUI_UPAGE는 언인스톨 할 때 보여주는 페이지들이다.

사용자 정의 화면을 만드는 방법은 다음과 같다.

  1. UI를 표시하는 ini 파일을 생성한다.
    물론 텍스트 파일 편집기로 ini 파일을 만들어도 되지만, HM NIS Edit 도구를 써서 만들도록 한다.
    만드는 방법은 파일(F) -> 인스톨 옵션 파일 만들기 를 선택한다. 그러면 다음과 같은 UI 도구가 나오는데,
    원하는 형태의 UI를 구성한다.
    custompage1
    적당한 UI를 넣고 설정을 한 뒤, 저장하면 ini 파일이 만들어진다.
  2. 만들어진 ini 파일을  스크립트 파일 내에서 등록해줘야 한다.
    먼저 스크립트 소스의 상단에 다음과 같은 줄을 포함한다.

    ReserveFile ".\qlmscr.ini"

  3. .onInit 함수 - 초기화 함수 - 에 다음과 같은 줄을 넣는다.

    !insertmacro INSTALLOPTIONS_EXTRACT_AS ".\qlmscr.ini" "qlmscr.ini"

    ini 파일의 내용을 미리 분석해서 이름을 정해 놓는 것이다. 즉 .\qlmscr.ini 라는 의미는 스크립트가 담긴 폴더위치의 qlmscr.ini를 분석한 뒤 이제 이름을 "qlmscr.ini" 로 하겠다는 것이다. 이제 이 화면에 대한 아이디는 바로 "qlmscr.ini" 가 되는 것이다.

    사실 ini 파일은 NSIS 가 설치된 폴더 아래에 있는 Plugin에 복사해서 사용하는게 일반적인 것 같다.
    하지만, ini 파일을 영구히 다른데서 쓸 예정이 아니라면, 스크립트 파일이 있는 위치에 ini 파일을 위치시켜 놓고, 위와 같은 줄을 포함해 놓으면 좋다.
  4. 위 쪽에 페이지 순서를 넣는 부분 처럼 Page custom 부분을 만들어 넣는다.
    여기서 Page custom을 만들 때 뒷부분에 다음과 같은 항목들이 들어가야 된다.
    Page custom {페이지생성용 함수} {페이지내 입력값 확인용 함수}

    예를 들면 이렇게 넣는다.

    Page custom CreateCheckUserInfo ValidateCheckUserInfo

    위와 같이 만들었으면 CreateCheckUserInfo 라는 함수와 ValidateCheckUserInfo 라는 함수도 덩달아 만든다.
  5. 생성용 함수로 들어가 다음과 같은 줄을 포함시킨다.

    !insertmacro MUI_HEADER_TEXT 'User Information' 'Input your information and serial key for authorizing this application'
    !insertmacro INSTALLOPTIONS_DISPLAY "qlmscr.ini"

    MUI_HEADER_TEXT 라는 것을 !insertmacro 해서 넣었는데, 이 부분이 현재 사용자 정의로 만든 창의 제목줄과 설명 줄 내용을 넣는 부분이다. 적당한 제목과 설명을 넣으면 된다.

    다음에 있는 INSTALLOPTIONS_DISPLY "qlmscr.ini" 부분은 qlmscr.ini 라고 정의된 사용자 정의 화면을 띄우는 작업이다. qlmscr.ini 는 앞서 .onInit 함수 안에서 설정한 그 이름이다. 즉 화면 아이디 같은 것. 즉 저 화면을 띄우겠다는 의미가 되는 것이다.

    만일 화면 안의 특정 요소들에서 값을 빼와야 되는 경우가 있다. 예를 들어 문자열을 입력받을 때 사용되는 텍스트 박스 같은 것이 있다면, 그 ID와 변수를 연결한다. 이 때 사용되는 문구가 다음과 같은 것이다.

    !insertmacro INSTALLOPTIONS_WRITE "qlmscr.ini" "Field 1" "State" "$UserName"

    번역하자면, "qlmscr.ini" 화면에 있는 "Field 1" 라는 컨트롤에서 속성 값 중, "State" 부분의 속성값을 $UserName 이라는 변수에 넣는다는 것이다. 이 때 주의할 점은 모든 값들 정보에 " " 가 들어간다.

    예를 들면 아래와 같은 모습이 되는 것이다.
    !insertmacro INSTALLOPTIONS_WRITE "qlmscr.ini" "Field 1" "State" "$UserName"
    !insertmacro INSTALLOPTIONS_WRITE "qlmscr.ini" "Field 2" "State" "$UserCompany"

 

일단 NSIS 로 인스톨러를 구성하면서 막혔던 부분에 대한 설명을 모두 담은 것 같다.
아직은 이 NSIS 라는 도구에 대한 학습이 부족하고, 더욱이 버젼별로 나누어 만드는 방법을 자동화 하는 방법을 아직 못찾고 있어서 현재로는 더 이상의 파악은 어려운 상태이다.

나중에 시간적인 여유가 되면 이 NSIS 라는 부분을 체크하고 인스톨러 답게 만들려고 한다.

여기까지 정리.

728x90

기나 긴 설치, 기나긴 구성은 이제 슬슬 정리하고,  이제 본격적으로 팀 사이트를 한번 써 보자.

맨 처음 팀 사이트를 접속하게 되면 NTLM창이 뜨고 그 안에 아이디와 암호를 넣게 되어 있다. (물론 앞의 포스팅 맨 하단에 위치한 내용 처럼 "신뢰된 사이트"로 등록되어 있고 아이디와 암호를 저장한 상태이면 자동으로 로그인 할 것이다. ) 그러면 대망의 첫 화면이 뜬다.
WSS에 "팀 사이트"를 만들도록 요청하면 아래의 화면 정도의 정보를 표시해 준다.

맨 처음 할 일은 우리의 공지 사항을 쓰는일 부터 하도록 하겠다.

자 써보자 공지사항!

일단, 공지 사항 부터 써보자. 공지 사항은 기본적으로 맨처음 화면에서 나오기 때문에, 팀 원 모두가 제일 먼저 확인할 필요가 있는 사항들을 보여준다. 그래서 팀 내에서 발생되는 각종 공지 내역을 이곳에서 쓸 수 있다. 모두에게 알릴일이 있다면 여기를 이용하자.

공지사항 쓰기.

고작 공지사항 쓰는데, 왠 제목을 나누어 쓸까, 무지하게 어렵나? 라고 생각하시는 분들이 있겠지만, 팀 사이트 설정이 워낙 다양하고 개인별로 변경도 가능해서 어떤 분은 새 공지사항 추가가 안나온다고 투덜대시거나, 공지사항 이라는 항목 자체가 없다고 하신다. - 잘 확인해보시면 무의식 적으로 무언가 조작을 하셨는데, 그게 무엇인지 모르실때 종종 이런 사고가 터진다. - 다양한 케이스들에 대해서는 계속 언급 드리겠다.

일단, 전체 화면 상에서 이상한 것들을 자꾸 눌러대지 않으시면 최소한 아래와 같은 부분을 확인할 수 있다. 그 중 새 공지사항 추가를 클릭하자.

아니면 공지 사항이라는 제목 부분을 클릭한 뒤 나오는 전체 목록 화면에서 새로 만들기 버튼을 클릭해도 된다.

2가지 방법 중 어느 방법이든 아래와 같은 화면이 뜨는데, 제목과 본문을 넣으면된다. 혹시 제한성 공지인 경우 - XX일까지 한정 이벤트 등등 - 만료일자를 선택해서 넣어주면 된다.

다 기록한 뒤 확인 버튼을 클릭하면 최종적으로 공지 사항이 등록된다. 이제 첫화면으로 돌아와 보면 앞서 등록한 공지사항이 잘 보일 것이다.

공지 사항 편집 및 삭제

특정 공지사항을 편집 하거나 삭제하려면, 해당 항목의 문건 안으로 들어가야 한다 만일 첫 화면에서 표시가 된다면 해당 공지 사항의 제목을 클릭한다.

아니면 해당 공지 사항 목록으로 넘어간뒤("공지 사항"이라는 부분을 클릭해서), 편집하려는 목록에서 클릭하면 된다. 가끔 마우스가 흔들려서 이상한 메뉴가 떳으면 당황하지 말고, 항목 편집을 선택해서 들어와도 무방하다.
 
    한뒤~~~~
     

그러면 아래 그림과 같은 항목 전체 내용을 보여주는 화면이 있는데 윗쪽 버튼 중 항목 편집 버튼을 클릭한다.

그러면 최초 공지 사항을 쓰는 것과 같은 화면이 뜨는데, 원하는 항목을 고친 뒤 확인을 클릭하시면 된다.

삭제 방법은 이미 위에서 슬금 슬금 지나쳐왔다.

삭제할 항목 위에서 메뉴가 나오게 한뒤, 항목 삭제를 선택하면 삭제된다. 앞에서는 어쩌다가 메뉴가 나온다고 했지만, 사실 항목 위에서 제목 외의 영역을 클릭하면 된다.(아래 그림의 붉은 박스 영역)

혹은 해당 항목 안에 들어가 항목 삭제를 클릭하면 된다.

사고 치신 분들을 도와드리자.

윗부분 까지는 기본적인 공지사항에 대한 CRUD - Create(생성), Read(읽기), Update(수정/편집), Delete(삭제)를 하는 가장 기본적인 수행 방법들을 나열했다.

그런데 여기서 중요한 점은 위의 모든 항목들의 출발점이 바로 맨 첫화면에 공지사항이 있다는 사실이다. 종종 사고 치시는 분들 중에 이 공지 사항 부분이 없다고 외치시는 분이 계신다. 또, 공지사항 전체 목록을 볼 수 있는 링크가 눈에 팍 안 띈다. 이런 점들을 개선하는 방법에 대해서 설명한다.

첫 화면에 공지사항이 안보여요!!!

가끔 호기심 많은 분들중에서 많이 볼 수 있다.
( WSS 문제로 발생될 수 있는 경우는 극히 드물다. WSS 자체 문제라면, 대부분의 모든 사람들이 동일하게 문제가 발생한다. 이런 경우에는 WSS 설정 문제이므로, 앞의 포스트들을 확인하면서 점검해주도록 한다. ).
무언가를 수정한 뒤 그 사실을 잊어먹거나 손댄 사실에 대해 잡아때시는 중일 것이다. 그렇다고 복구가 불가능한 것은 아니다. 방법을 일러드리도록 하겠다.

일단 문제가 발생하신 분의 화면에 들어가도록 한다.

아래의 화면은 1팀 최고, 호기심 덩어리 마영수 주임(hoto95)의 작품이다. 휑하다 못해 아무것도 없다.

그에게 무슨 짓을 한 거냐고 물어봤더니, 아무짓도 안했다고 한다.
그럴리가 없는데 운을 떼도, 아니란다. 일단 사실 추궁은 나중의 일.
복구는 해줘야 겠다는 생각을 먼저하도록 하자.

일단 해당 사용자로 로그인한 상태에서 이름 부분을 클릭하여 메뉴를 띄우도록 한다.
메뉴 내용 중, 페이지 컨텐츠 원래대로를 선택하도록 한다.

그러면, 알림 메시지가 뜨는데 확인을 클릭하고 넘어가도록 한다.

최종적으로 아래와 같은 화면으로 복귀되었음을 알 수 있다.

이 문제가 발생되는 대부분의 원인은 호기심이다.
( 그러나 말리지는 말자. 이런 분들이 재미있는 기능을 찾아내거나, 해괴한 사용법들로 발생되는 다양한 케이스들을 추적하다 보면 나름대로 경험을 쌓을 수 있는 최고의 교재를 체험식 제공을 해주시는 분들이다. WSS에 대한 다양한 경험과 능력 획득이 목표로 생각하시는 분은,  이런 분 꼭 옆에 두셔야 한다.!!!! )

일단 필자 기준으로 위와 같은 문제를 접하게 되는 주요 원인은, 각 구성요소 오른쪽 끝에 삼각형이 있어 그 부분을 클릭하신 것이다. 신기하게도 메뉴가 뜨고 그 메뉴에서 닫기를 하니 사라져 버린 것이다.

공지 사항 목록을 모두 보는 메뉴를 하나 열자.

이 부분은 공지사항 뿐만 아니라, 유용한 팁이 될 수 있을지도 모르겠다.
지금까지 공지사항 목록은 첫 화면에 위치한 공지사항을 클릭해서 목록을 확인했다. 그러기 보다는 전체 공지사항 목록을 쉽게 따라 갈 수 있는 부분을 넣어주면 편할 수 있다.
첫화면에 위치한 왼쪽 목록에 넣는 것이다.

일단 관리자 계정으로 로그인하자.
그리고 난 뒤 공지사항의 URL 주소를 먼저 파악하도록 한다. 공지 사항 목록이 보이는 부분으로 들어가보면 주소 줄에 나온다(공지 사항 부분의 "공지 사항" 부분을 클릭하면 된다).

주소를 보면 http://사이트URL/Lists/Announcements/AllItems.aspx 라고 적혀 있을 것이다. 예제화면에는 http://wsstestsvr/Lists/Announcements/AllItems.aspx 이다.
여튼 이 주소를 적당한 위치에 복사 해 놓는다. - 메모장 이든, 포스트 잇이든...

그리고, 상단 위쪽에 있는 사이트 작업을 클릭 한 뒤, 메뉴를 띄우자. 메뉴 중 사이트 설정이 있는데 그 항목을 클릭해서 들어간다. (아마 이전 포스트에서 사용자 로그인 처리관계로 들어가 본 경험이 있을 것이다.)

수많은 항목 중, 디자인 묶음에 있는 빠른 실행 부분을 클릭하도록 한다.

그러면 트리스러운 무언가들이 쭉 나열되어 있다.

아마도 치밀한 기억력의 소유자나, 날카로운 관찰력을 가지신 분이시라면, 바로 이 부분이 모든 화면에 나온 왼쪽 메뉴 목록과 동일함을 알 수 있을 것이다. ( 혹시 모르셨어도, 한번 메인 페이지에 갔다가 다시 이곳과 비교해 보면 알 수 있다. ).
결론 부터 말하자면, 아까 복사한 주소 값을 여기에 추가하면 된다.

입력하는 방법은 아래와 같다.

  1. 상단에 위치한 새 제목을 클릭 한다.

  2. 그리고 그 다음에 나오는 부분에 아래와 같이 입력을 해주면 된다.

  3. 그러면 다음과 같이 그 결과물을 볼 수 있다.

  4. 꼼꼼한 당신. 나름 공지 사항인데, 어찌 맨 아래? 라고 할 수 있다. 이런 경우 바로 순서 변경 버튼을 클릭한다. - 새 제목 버튼  오른쪽에 위치 - 그리고 난 뒤 순서 배치 정하는 화면에서 숫자를 1로 바꾸어준다.

일단, 각종 상황에 따라 그 결과를 처리할 수 있도록 이것 저것을 제시해 보았다.
사실 단순히 공지사항만 쓴다면 아마도 포스팅 할 가치조차 없는 내용이지 않을까 싶다.  위의 내용이 마치 당연한 수순 처럼 보일지는 모르겠지만, 알게 모르게 WSS 내에 기능 몇가지를 꺼내서 보여드렸다. - 잘 모르시겠다면, 나중에 또 비슷한 일이 생기면 해보시면 알 수 있을 것이다. - 이후에 포스팅 되는 내용들도 기본 기능 사용 방법을 일러 드린 후 그 뒤에 추가적으로 어떻게 해야 되는지를 다시 천천히 일러드릴 예정이다.

P.S. 벌써 비축분이... 바닥을 -_-;;;;;

728x90

+ Recent posts

728x90