2013-05-03 5 views
1

주어진 데이터베이스에 대해 .sql 파일 집합을 실행하는 사용자 지정 작업을 호출하려고합니다. 나는 내 SQL 파일을 사용할 수있는 폴더의 하드 코드 경로를 (C#에서) 사용자 지정 작업 코드를 사용하여 할 수 있어요.WiX Installer - .msi와 같은 위치에있는 폴더에서 sql 파일 내용을 읽는 방법

이 .msi가있는 동일한 위치에이 sql scripts 폴더를 넣으 려합니다. 설치하는 동안 사용자 지정 작업에서이 폴더 경로에 액세스하거나 찾을 수 있습니까?

Wix 3.6을 사용하고 있습니다. 닷넷 부트 스트 래퍼를 사용하여 setup.exe를 생성하고 있습니다.

+0

SQL 확장을 사용해 보셨습니까? Sql 스크립트를 바이너리 스트림으로 전달할 수 있습니다. 세부 정보 : http://wix.sourceforge.net/manual-wix2/wix_xsd_sqlscript.htm – Vinoth

답변

2

WiX 툴셋의 SqlScript 요소는 사용자가 원하는 많은 작업을 수행 할 수 있습니다. 실제로 MSI에 상대적인 파일에 의존하지 않고 MSI에 Binary 스트림이라는 스크립트를 저장합니다. MSI가 실행되지만 원본 원본 미디어에 액세스 할 수없는 경우가 많으므로 스크립트를 찾을 수없는 경우가 많기 때문에 이것은 중요한 디자인 결정입니다. 예를 들어 캐시 된 MSI 패키지에서 복구 작업을 시작할 수 있습니다. 사용자 지정 작업을 복구하려면 스크립트를 가져 오기 위해 원본 미디어가 필요합니다. 이것은 그리 바람직하지 않습니다.

정말로이 경로로 이동하려면 SourceDir 디렉토리를 사용하여 MSI의 "소스 위치"를 확인하십시오. 위에서 언급했듯이 원본 미디어가 항상 사용 가능한 것은 아니며 해당 경우 SourceDir이 비어있을 수 있습니다. SourceDir을 강제 설정하려면 ResolveFiles 액션을 추가해야합니다. ResolveFiles을 예약 할 때 원본 미디어가 필요하므로주의하십시오. 찾을 수없는 경우 사용자에게 다시 삽입하라는 메시지가 표시됩니다.

ResolveFiles의 잘못된 시퀀스의 최악은 사용자가 제품을 제거하려고 시도 할 때 원본에서 프롬프트됩니다. 사용자는 컴퓨터의 응용 프로그램을 얻으려고 시도하고 원래 설치 방법을 찾지 못하면 막을 수 있습니다. 정말 사용자를 화나게하는 좋은 방법입니다. :)

정말로 관심이 있다면 SqlScript 요소 나 소스 코드를 살펴 보는 것이 좋습니다. 그것은 src \ ca \ serverca에있는 WiX 툴셋에 있습니다 (아래 이름에 "sql"이있는 파일을 찾으십시오).