2013-05-20 1 views
1

32 비트 및 64 비트 버전의 타사 라이브러리가 포함 된 설치 프로그램이 있습니다. 라이브러리에는 동일한 파일 이름의 32 비트 및 64 비트 폴더가 제공됩니다. 내가 한 일은 파일 이름이 32/64라는 고유 한 이름으로 변경되어 설치 프로그램에 둘 다 포함될 수 있습니다. FILE 태그를 설정하여 파일을 조건부로 포함 시키려고하지만 기본 이름 인 efxzlib.dll로 다시 이름을 바꿉니다.조건부로 파일을 포함하고 이름을 바꿉니다.

파일로 가능합니까? FileName 특성은 설치 시간이 아닌 빌드시 파일의 이름을 바꾸는 것처럼 보입니다. 이 DLL은 유일한 32/64 구성 요소이기 때문에 별도의 32 비트 및 64 비트 설치 프로그램을 피하려고합니다. 이 기능은 Managed Custom Action으로 가장 잘 수행됩니까?

<Component Id="CMP_EFX_ZLIB_32BIt" Guid="MY_GUID1"> 
    <Condition> 
     <![CDATA[NOT(VersionNT64)]]> 
    </Condition> 
    <File Id="FILE_EFX_ZLIB_32BIt" KeyPath="yes" Source="$(var.EFX5LibraryBase32bit)\efxzlib32.dll" Name="efxzlib.dll" /> 
    </Component> 
    <Component Id="CMP_EFX_ZLIB_64BIt" Guid="{MY_GUID2}"> 
    <Condition> 
     <![CDATA[VersionNT64]]> 
    </Condition> 
    <File Id="FILE_EFX_ZLIB_64BIt" KeyPath="yes" Source="$(var.EFX5LibraryBase64bit)\efxzlib64.dll" Name="efxzlib.dll" /> 
    </Component> 
+0

견본은 좋아 보인다. 무엇이 그것으로 작동하지 않습니까? –

+0

wix는 두 파일 모두를 사용하여 설치 패키지를 빌드합니다. 이름이 같으므로 그 중 하나를 덮어 씁니다. 두 파일을 설치 프로그램에 32/64.dll로 설치하고 두 개 중 하나만 설치하고 파일의 이름을 변경하십시오. –

답변

0

일반적인 Windows 설치 프로그램의 경우 비정상적인 상황이므로 위의 방법으로 해결할 수 있을지는 의문입니다. 올바른 방법으로이 작업을 수행하려면 32 비트 시스템 용 설치 프로그램과 64 비트 시스템 용 설치 프로그램이 있어야합니다. 따라서 설치 디자인을 고집한다면 두 시스템에 설치할 수있는 하나의 32 비트 설치 프로그램으로 끝납니다. 다른 방법으로는 적합하지 않습니다. 그래서 이런 경우에는 설치 후 사용자 지정 작업에서 파일 이름 바꾸기를 권장합니다. 그렇게하려면 관리자 권한을 얻어야합니다. 또한 업데이트 및 제거와 재설치를 통해 문제를 해결해야합니다.

업데이트 및 재설치의 경우 해당 사항을 적용 할 수있는 경우 설치 사용자 지정 작업을 다시 게시해야합니다.

제거 할 경우 파일의 이름을 원래대로 되돌리려면 사전 설치 단계가 필요합니다. 그렇지 않으면이 사용자 지정 작업으로 파일을 삭제하거나 XML에서 폴더 삭제를 적용 할 수 있습니다. 그렇지 않으면 응용 프로그램을 제거하더라도 파일이 디스크에 남아 있습니다.

이것은 꽤 복잡한 작업이지만 내구성이 있습니다. 또는 2 개의 설치 프로그램 옵션을 다시 고려하십시오.