2014-02-10 4 views
0

Wix Toolset 3.8 Visual Studio 추가 기능을 사용하고 있습니다. 필자는 다양한 서비스 배포 프로젝트에 의해 소비 될 몇 가지 공통 구성 요소를 캡슐화하는 WIX 설치 라이브러리를 만들었습니다. 이 라이브러리에는 각 배포에 패키징해야하는 여러 솔루션 파일에 대한 참조가 포함되어 있습니다.WIX 설치 라이브러리에서 파일 참조 무결성을 유지하는 방법

generic WIX Setup Library Project with solution file references

이러한 종속성은 몇 가지 다른 방법으로 내 윅스 라이브러리 조각에 사용됩니다. 예를 들면 :

<Binary Id="InstallationScript" SourceFile=".\Dependency1.vbs" /> 
<CustomAction Id="DependencyAction" 
       BinaryKey="InstallationScript" 
       VBScriptCall="" 
       Execute="deferred" 
       Return="check" 
       HideTarget="no"/> 
<Component Id="DLL_Component" Guid="4745D9E2-0EBA-EE57-D8DB-677ADA9E9EC8"> 
    <File Id="DLL1" Name="Dependency1.DLL" Source=".\Dependency1.dll" Vital="yes" KeyPath="yes" DiskId="1"/> 
</Component> 

내가 링크로 프로젝트에 파일을 추가하거나 프로젝트 디렉토리에 복사하고, 내가 프로젝트 디렉토리에 참조하거나 상대 경로를 사용하는지 여부를 도서관이 잘 구축 윅스 설치 그들의 원래 위치. 문제는 내 서비스 배포를 위해 WIX 설치 프로젝트에 조각을 포함시킬 때 발생합니다.

It would be shameful to include every solution file in the Setup Project directly.

<Custom Action="DependencyAction" Before="InstallFinalize"> 
    NOT INSTALLED AND NOT UPGRADINGPRODUCTCODE 
</Custom> 

설치 프로젝트는 WIX 라이브러리에서 참조 때처럼 그렇게 상대 경로가 같은 장소를 가리 키지 않습니다, 폴더 구조에서 동일한 상대 깊이에 없습니다. WIX 라이브러리의 작업이나 기능을 참조 할 때 The system cannot fine the file '.\Dependency1.dll'과 같은 오류가 발생합니다. 라이브러리 프로젝트 위치가 아니라 설치 프로젝트 위치에서 XML이 정확하게 읽혀지고 참조되므로 상대 디렉토리가 잘못되었습니다. WIX 라이브러리의 상대 경로를 사용하는 설치 프로젝트에 맞게 설정하거나 솔루션 파일을 설치 프로젝트 디렉토리에 복사 할 수는 있지만 물론이 옵션을 사용하는 목적을 완전히 상쇄 할 수 있습니다. 일반적인 WIX 라이브러리. 이 라이브러리를 사용해야하는 다른 서비스 배포 프로젝트가 있습니다.

질문 : WIX 라이브러리의 솔루션 파일을 사용하는 설치 프로젝트에서 사용할 수있는 방법으로 설치 프로젝트의 디렉터리에 관계없이 어떻게 참조합니까?

답변

4

작성시 참조되는 파일이 들어있는 바이너리 .wixlib을 만듭니다. (명령 줄에서 -bf, .wixproj의 BindFiles 속성, "Votive의 파일을 라이브러리 파일에 바인딩"체크 박스)

+0

아 ... "라이브러리 파일에 파일 바인딩"체크 상자가 나타납니다. Build 탭의 맨 아래에 BindFiles 및 LibBindFiles 속성이 프로젝트 파일에 추가 된 것을보고 Votive = Visual Studio 추가 기능을 확인했습니다. 연결은 내가 예상했던대로 작동하고있다. .wixlib가 더 크면 파일이 내부에 바인딩되었음을 나타냅니다. 더 중요한 것은 소스 참조는 .wixlib 빌드 중에 만 관련이 있습니다. 기능, 구성 요소 또는 동작이 종속 프로젝트에 의해 참조되면이 프로젝트의 상대 위치와 관계없이 자동으로 링크됩니다. –

+0

다른 사람들이 동일한 문제가있을 수 있습니다 ... 프로젝트 속성 Build Tab이 "Bind Files to the library file"확인란을 일관되게 표시하지 않는다는 것을 발견했습니다. VS2010과 VS2012에서 같은 문제가 발생합니다. 스크롤 막대가 필요하도록 창 크기가 수직적으로 작 으면이 확인란을 표시 할 정도로 충분히 아래로 스크롤 할 수 없습니다. 그러나 스크롤바가 필요하지 않은 충분한 공간을 창에 부여하면 체크 박스가 아래쪽에 나타납니다. 또는 프로젝트 파일을 편집하고 PropertyGroup 노드 디버그 및 릴리스에 속성을 수동으로 추가하십시오. –

+0

버그를 신고하십시오. Visual Studio에서 문제가 있지만 스크롤이 제대로 작동해야 문제를 해결할 수 있을지 확신 할 수 없습니다. –

관련 문제