2016-11-21 1 views
0

installview, progressview, finishview, uninstallview 등과 같은 다른보기의 흐름에서 작동하는 사용자 정의 된 UI를 사용하고 있습니다. 사용자 정의 설치 프로그램에는 두 가지 옵션이 있습니다. 설치 디렉토리 및 기타 데이터베이스 디렉토리를 변경합니다. 내 사용자 지정 설치 관리자는 두 msi를 포함합니다. msi에 데이터베이스 디렉토리를 전달하려고 할 때마다 넘어지지 않습니다. 항상 기본 경로를 사용합니다.Wix 사용자가 디렉토리를 덮어 쓸 수 없습니다.

내 사용자 지정 설치 관리자는 overimable 인 데이터베이스에 대한 변수를 포함하고이 값을 msi로 전달합니다.

<Variable Name="DatabaseFolder" bal:Overridable="yes" Type="string" Value="[CommonAppDataFolder]$(var.ManufacturerName)\$(var.ProductName)" /> 


<MsiPackage Id="StorageApp" 
       DisplayInternalUI="no" 
       DisplayName="$(var.StorageApp)" 
       Permanent="no" 
       Visible="yes" 
       Vital="yes" 
       SourceFile="$(var.StorageAppExe)" 
       Compressed="yes"> 
       <MsiProperty Name="DATABASEAPPDATAFOLDER" Value="[DatabaseFolder]" /> 
    </MsiPackage> 

기본적으로 DatabaseProductName은 디렉토리 이름으로 사용됩니다. 하지만 내가 디렉토리를 변경하면 항상 기본 경로를 사용합니다. 왜 나는 기본값을 초과 할 수 없었습니다. 내 코드에 누락 된 것이 있습니까? 당신이 무슨 뜻인지

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="CommonAppDataFolder"> 
    <Directory Id="CompanyAppDataFolder" Name="$(var.DatabaseManufacturerName)"> 
     <Directory Id="DATABASEAPPDATAFOLDER" Name="$(var.DatabaseProductName)"> 
     </Directory> 
    </Directory> 
    </Directory> 
</DirectoryRef> 

답변

0

확실하지 "하지만 디렉토리 ...를 변경 한 경우". $ (var.DatabaseProductName) 또는 디렉터리 ID의 값을 변경 했습니까?

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="CommonAppDataFolder"> 
    <Directory Id="CompanyAppDataFolder" Name="Folder1"> 
     <Directory Id="DATABASEAPPDATAFOLDER" Name="SubFolder1"> 
     </Directory> 
    </Directory> 
    </Directory> 
</DirectoryRef> 
:

대신 $ (var.DatabaseProductName)

예를 통해 값을 전달하는 속성 "는 = 이름"반드시 당신이 직접 디렉토리 이름을 설정하여 디렉토리 구조를 확인하십시오

방금 ​​알림. 디렉토리 아이디은 .wxs 파일의 다른 위치에서 폴더를 참조하기위한 것입니다. "Name ="속성을 채우는 문자열은 최종적으로 응용 프로그램을 설치할 때 폴더의 실제 이름이됩니다.

관련 문제