Posts Tagged InstallShield

InstallShield Tips

앞으로 평생 모르고 사는 편이 백배 나은 것은 틀림없지만, InstallShield 관련 몇 가지 링크를 정리해둔다.

Creating an Uninstall Shortcut for an InstallScript MSI Project
Setup.exe Command-Line Parameters
InstallShield: Verbosely Log a Command-Line Build
Changing the Bitmap in SdWelcome, SdFinish, and SdFinishReboot

다음은 알려진 버그 둘.

Choose Folder Dialog Loses Focus on Windows 2000 and Windows XP
Error -2 Transform Package

그리고 다른 팁들…

1. Vista는 바탕화면 아이콘을 만들고 나서 강제로 바탕화면을 새로고침 해주어야 한다. 안그러면 바로가기가 안생긴 것처럼 보이는 경우가 있다. 관련 게시판 글

2. InstallShield IDE로는 일부 Dialog만 편집할 수 있다. 즉, 편집할 수 없는 Dialog를 수정하고 싶으면 InstallShiled가 설치된 폴더에 가서 _IsRes.dll 을 찾아 직접 수정해 주어야 한다. 물론 이걸 잘못 고치면 InstallShield EULA를 어기는 수가 있다. 라이센스보다 직접적인 문제는 이 dll이 인코딩된 놈이라 VisualStudio에서 안열린다는 것. 인코딩 되기 전의 DLL을 게시판에서 겨우 찾을 수 있었다.

3. Installer Dialog 의 왼쪽 아래에 보면 흔히 “InstallShield”라고 음각으로 박혀있는 것을 볼 수 있다. 이건 InstallShield IDE에서 편리하게 고칠 수 없도록 숨겨져 있는데, Direct Editor로 보면 각 창마다 있는 7번 Control이 바로 음각으로 새겨진 녀석이다. 이건 Text를 수정해봐야 빌드할 때 “InstallShield”로 바뀐다. 그러니 저 Control 은 엄한 좌표로 보내버리고, 그 자리에 새로 음각 폰트로 TextArea Control을 만들어 넣으면 된다. 이 경우에 남는 문제는 IDE에서 편집할 수 없는 창들인데, 그런 것들은 2번에서 리소스 DLL을 수정해 주면 된다. 사실 3번 하기 전에 2번부터 하는 게 좋긴 하지만 아마도 EULA를 어기는 일이 아닐까 싶다.

마지막으로 충고 한마디.

InstallShield 쓰지 마라.

Add comment November 3, 2008

InstallShield에서 INI파일에 한 줄 추가하기

InstallScript 는 친절하게도 AddProfString() 이라는 API 를 제공한다. INI 류의 파일을 다루기 위해 만들어준 것으로, 파일명, 섹션명, Key, Value 를 인자로 주면 해당 파일의 [섹션]아래 Key=Value 식으로 넣어준다. …혹은 넣어주어야 한다. 하지만! 아무 이유 없이 그냥 안될 때가 있다. 그냥 안될 때는 반환되는 에러 코드도 0, 성공이다. 그러니까 이런 경우는 대책이 없다. 안쓰는 수 밖에… 물론, 저런 API 쓰지 않아도 OpenFileMode() 를 Append 모드로 설정하고, OpenFile() 로 파일 열고, WriteLine() 으로 파일 끝에 한 줄 덧붙여 주면 되는 경우가 대부분일 것이다.

덧붙여 주의할 점. InstallScript 에서 문자열을 붙여주는 연산자는 “+”다. “^” 연산자는 경로 문자열을 붙이는 경우에만 사용해야 한다. 예를 들어, szStr 에 

“A=(프로그램이 설치된 폴더)\B”

라는 문자열을 넣고 싶으면,

szStr = “A=”+TARGETDIR^B;

라고 해야 한다.

Add comment October 20, 2008

InstallShield에 DirectX Object 추가하기

UI만 보면 간단할 것처럼 보인다. Prerequisite 메뉴를 누르면 추가할 수 있는 DX를 포함해서 .Net framework 이나 IE 등등의 InstallScript Object 들이 주욱 나온다. 여기서 추가하고 싶은 Object 를 선택하고 이 Object가 필요한 Feature를 고르면 사용자가 그 Feature를 설치할 때 고른 Object가 설치된다.

그런데 InstallShield가 제공하는 Object들은 오래전 버전일 수 있다. 예를 들면, InstallShield 2008에서 제공하는 DirectX Object는 2006년 까지의 배포본만 들어가 있다. 따라서 2007년 이후의 DX를 배포하고자 하는 경우는 Object를 손으로 업데이트 해주어야 한다. 문서만 보면 간단할 것 같은데, 문서에 자세히 적혀있지 않아서 조심해야 할 사항들이 있다.

첫째, 문서에 나온 폴더 C:\Program Files\Macrovision\IS2008\Objects\DirectX9c\Redist에 가보면, DX9Helper.dll 이라는 것이 있다. 이건 MS의 DX 배포본에 들어있는 게 아니로 InstallShield에서 쓰려고 넣어둔 거다. 그러니까 저걸 모르고 배포본이 들어있는 폴더를 그냥 바꿔치기하면 당연히 DX가 안깔린다. 그냥 저 폴더에 최신 배포본을 덮어쓰는 것이 좋다.

둘째, 프로젝트에 포함되어 배포되는 파일들은 빌드될 때 결정되는 게 아니라, Object를 프로젝트에 포함시킬 때 결정된다. 그러니까, 위의 폴더에 새로운 DX 배포본을 복사해 넣고 그냥 빌드하면 여전히 이전 버전의 .cab들만 결과물에 포함된다. 새로운 배포본을 복사한 다음에는, 프로젝트에서 InstallScript Object를 한 번 제거해 주었다가 다시 추가해 주어야 한다.

Add comment October 15, 2008

Previous Posts


Tags

addon android Assembly batch book C++ editor excel google InstallShield lua personal physic security wow

Recent Posts

Recent Comments

지양 on Source Insight – Browse …
조프 on Source Insight – Browse …
조프 on Source Insight – Browse …
랑탕 on Google 크롬의 Crash message
지양 on n&(n-1)

Blogroll