인스톨쉴드를 사용하신다면 접하게 되는 문제들에 도움이 될만한 사이트들입니다.

http://support.installshield.com/kb/

에러번호나 기타 궁금한점 검색하시면 웬만한건다 해결 가능합니다.

http://www.installsite.org

팁성의 글들이 많습니다. (setup.exe누르면 계속 설치되고, 제어판에서만 삭제 하기 같은 )

이 두군데만 잘 활용하셔도 필요한것은 다 얻으실 수 있습니다.

P.S : 영문 사이트라 영어의 압박이 좀 있습니다.ㅋ

Posted by 쿵캉켕

스크립트에서 궁금한부분이 있는경우 해당 스크립트를 클릭하고 F1을 누르면 Help가 뜹니다.

1. 레지스트리 조작관련
  - Registry 로 검색

2. 인스톨중 사용하는 다이얼로그
  - Sd...로 시작함  

3. 파일 폴더 복사, 삭제 관련
  - Copy, Delete..등으로 검색

4. 시스템환경변수
  - System variables

5. INI파일 조작관련
  - WriteProfString 로 해서 See Also로 관련 함수 찾기

6. 스크립트 문법사항
  - if, for, while등 으로 검색

7. 파일 버전 관련
  - Version checking

8. 연산자
  - Operators

9. 사용자정의 다이얼로그 관련
  - Custom dialog boxes

P. : S모든 함수는 사용 예제와 함께 있습니다.

Posted by 쿵캉켕

기본 함수의 경우 스크립트 창을 열고 상단에 보면 두개의 콤보 박스가 있다.  이걸 조절하시면 쉴드에서 사용하는 기본 함수가 추가 된다. 셋업이 진행되면서 호출되는 함수중에서 빈번히 사용하는 순서를 보면

설치시

  OnBegin -> OnFirstUIBefore() -> OnFirstUIAfter() -> OnEnd() 

 삭제시

  OnBegin -> OnMaintUIBefore() ->  OnMaintUIAfter() -> OnEnd()

이다. 주로 설치 전에 해야 할일은 Before에서 설치후에 해야 할일은 After에서 코딩한다.

ps. 캡쳐화면은 8.0버전이다.

 

 

Posted by 쿵캉켕

사용자가 제작한 확장자 파일을 클릭한 경우 설치한 프로그램에 연결하고자 할 때 인스톨쉴드의 스크립트 부분에 다음 함수를 구현한다.

1. 스크립트 맨 위쪽에 구현할 함수를 선언한다.
prototype NUMBER MakeAssociation(STRING, STRING, STRING); //선언부분

.

.

.

.

////////////////////////////////////////////////////////////////////////
//                                                                    //
//  Function:   MakeAssociation                                       //
//                                                                    //
//  Purpose:    Creates a file association in the Registry.  Use      //
//            this function for Explorer shell only, as it will       //
//            not create the extra application identification keys,   //
//            which are necessary for Program Mananger shell.         //
//            For Program Manager shell, you can use the script-      //
//            based function MakeAssociationEx.                       //
//                                                                    //
//  Parameters:                                                       //
//      szApp:    String with full path to the executable to be       //
//                associated with the file extension.                 //
//                                                                    //
//      szExtension:  String with the extension to be associated      //
//                with an application.  Must include the preceding    //
//                period (for example:  ".txt")                       //
//                                                                    //
//      szIcon :   String with full path to the executable to be      //
//                associated with the file Icon                       //
//                                                                    //
////////////////////////////////////////////////////////////////////////

 

//구현 부분
2. 선언한 함수의 내용을 구현한다.

  function MakeAssociation(szApp, szExtension, szIcon)
  BOOL      bResult;
  NUMBER    nResult;
  STRING szOpen;

  begin

    RegDBSetDefaultRoot ( HKEY_CLASSES_ROOT );

    bResult = RegDBKeyExist(szExtension);
    if (bResult = TRUE) then
      nResult = AskYesNo ("Warning the extension " + szExtension + " is already registered. Overwrite?", YES);
      if (nResult = NO) then
         return -1;
      endif;
    endif;

    LongPathToShortPath (szApp);
    szApp = szApp + " \"%1\"";
    szOpen = "open" + " \"%1\"";
    RegDBCreateKeyEx (szExtension, "");
   
    RegDBCreateKeyEx (szExtension + "\\DefaultIcon", "");
    RegDBSetKeyValueEx (szExtension + "\\DefaultIcon","", REGDB_STRING, szIcon, -1);

    RegDBCreateKeyEx (szExtension + "\\shell", "");
    RegDBCreateKeyEx (szExtension + "\\shell\\open", "");
    RegDBCreateKeyEx (szExtension + "\\shell\\open\\command", "");
    RegDBSetKeyValueEx (szExtension + "\\shell\\open\\command", "", REGDB_STRING, szApp, -1);
   
    //RegDBCreateKeyEx (szExtension + "\\shell\\open\\ddeexec", "");//추가
    //RegDBSetKeyValueEx (szExtension + "\\shell\\open\\ddeexec", "", REGDB_STRING, szOpen, -1);//추가
   
    return 0;
  end;

 

//호출부분
3. 위의 함수를 구현하고, 함수를 호출하고자 하는 부분에 다음 부분을 입력한다.

STRING szExtension, szAppPath, szIcon;//변수 선언 부분

szExtension = ".txt"; //연결할 사용자확장자
szAppPath = INSTALLDIR^"Program.exe";//실행파일 경로 및 실행파일 명
szIcon = INSTALLDIR^"Program.exe,0"; //아이콘 변환
MakeAssociation(szAppPath, szExtension, szIcon);//함수 호출

이렇게 입력하고 설치파일을 만들고 PC에 설치하면 레지스트리에 해당 값들이 입력되며 사용자 확장자를 클릭하면 해당 프로그램이 실행된다.

Posted by 쿵캉켕

  설치파일 제작시 설치가 끝난 뒤 해당 Driver등을 같이 설치해야 할 때가 있다. 사용자에게 뒤에 설치되는 Driver의 창을 보이게 하지 않고 설치하고 싶은 경우 InstallShield의 스크립트를 이용하면 설치가 끝난 뒤 바로 Driver를 설치하며 Drver의 설치창을 안보이게 할 수 있다.

1. Project Wizard로 만들 때 Features(폴더 경로)부분에 Driver라는 폴더를 추가하고 그 안에 Driver 파일을 추가한다.

2. 그리고 InstallScript에서 OnFirstUIAfter()부분에 아래의 함수를 추가하고 Setup File을 제작한다. 

if (LaunchAppAndWait(INSTALLDIR^"Driver\\ProtectionInstaller.exe","/s /v/q",WAIT) < 0) then
     MessageBox("Driver를 설치하지 못했습니다.",SEVERE);

endif;

LaunchAppAndWait()함수는 cmd Line실행하여 해당 .exe를 실행하라는 함수이다.

  - INSTALLDIR^"Driver\\ProtectionInstaller.exe" -> INSTALLDIR은 Setup파일을 설치할 때 사용자가 폴더경로를 지정하는데 그 경로이다. 그 뒤의 경로는 설치가 끝난 후 설치된 폴더 안의 경로와 실행할 파일의 이름이다.
  - '/s /v/q' -> 이부분이 Driver의 설치 화면을 보이지 않게 해주는 부분이다.
  - WAIT -> WAIT로 쓸 경우 위에서 지정한 파일이 설치완료될 때까지 다음단계로 못넘어가며, NOWAIT로 쓸 경우 Driver는 설치되고 Setup은 다음 단계로 넘어갈 수 있다.

Posted by 쿵캉켕