2013-04-02 1 views
0

x86 또는 x64 아키텍처에 설치할 수있는 웹 서비스 용 설치 관리자를 빌드하려고합니다. 서비스의 일부로 SQLite3.dll을 사용하고 dll은 아키텍처에 따라 다릅니다. 설치 프로그램에서 서버의 아키텍처를 기반으로 dll의 적절한 버전을 복사해야합니다. 이것이 가능한가? 그렇다면 어떻게?InstallShield 2011은 아키텍처를 기반으로 파일의 두 가지 버전을 선택할 수 있습니까?

Google 검색은 미러링 된 기능/구성 요소 세트와 관련된 몇 가지 복잡한 아이디어를 나타 냈지만 아키텍처 플래그를 기반으로 한 소스 폴더 위치와 다른 위치를 쉽게 선택할 수 있어야한다고 생각합니다.

답변

0

정답은 수행하려는 작업에 따라 크게 달라집니다.

기계와 일치하는 플랫폼에서 하나의 DLL을 제공하는 하나의 전체 32 비트 패키지가있는 경우, 각 플랫폼 변형을 다른 구성 요소에 넣고 해당 구성 요소를 런타임에 올바른 것이 설치됩니다. 귀하의 조건을 근거로 예를 들어 Msix64 속성을 참조하십시오.

하나는 32 비트이고 x86 DLL을 포함하고 다른 하나는 64 비트이고 64 비트 DLL을 포함하는 두 개의 패키지를 만들려면 여러 기능으로 미러 된 구성 요소를 사용해야합니다 Release Flags을 사용하여 필요없는 세트 제외) 및 릴리스보기의 두 가지 다른 제품 구성을 사용할 수 있습니다. 또는 두 개의 미러 된 프로젝트를 만들 수 있습니다.

Path Variable Overrides을 사용하여 같은 구성 요소에 대해 다른 빌드 소스를 선택하는 것만으로는 결과 구성 요소가 서로 다른 플랫폼에 적합하기 때문에 권장하지 않습니다. 즉, 두 구성 요소가 동일한 시스템에서 종료되는 경우에만 일반적으로 문제가 발생하지만 서로 다른 구성 요소 코드를 사용해야 함을 의미합니다.

+0

Msix64 (및 기타 속성) 방식을 사용했지만 구성 요소에 대해 설정 한 조건에 상관없이 x64 비트 파일이 항상 시스템에서 종료되었습니다. 나는 x86을 위해 조건을 비워두고 x64를 위해 "Msix64> = 0"을 사용하려고 노력했다; 또한 x64 파일의 경우 "Msix64 =" ""및 "Msix64", "Msix64> = 0", "NOT (Msix64 =" ")"을 시도했습니다. 같은 결과 - 항상 x64 파일로 끝납니다. 또한이 서비스는 x64 및 x86 버전을 동일한 시스템에 설치하지 않으므로 문제가되지 않습니다. –

+0

로그의 Msix64 값은 무엇입니까? 일반적으로 나는 목록에서'Msix64','Not Msix64', 또는 아마도 여러분이 묘사하는 빈칸을 사용할 것입니다. –

+0

64 비트 시스템에서 값은 6입니다. 32 비트 시스템에서는 값이 전혀 정의되지 않습니다. –