2011-10-21 5 views
1

이 디렉터리 구조가 있다고 가정 해 봅니다.WIX UI 폴더 덮어 쓰기 경로 사용자 지정 작업

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="test" Name="test"> 
    <Component Id="file" Guid="*"> 
     <File Id="file" Source="file.dll"></File> 
    </Component> 
    </Directory> 
</Directory> 

이렇게하면 file.dll이 C : \ test에 설치됩니다. 설치하는 동안 C : \ newpath \로 파일 디렉토리를 겹쳐 쓰고 대신 파일을 설치하십시오. 나는 운이없는 커스텀 액션으로 이것을 시도했다. \ 테스트

내가 다른 무엇을 할 수
<InstallExecuteSequence> 
    <Custom Action="OverwriteDir" After="CostFinalize" /> 
</InstallExecuteSequence> 

[CustomAction] 
public static ActionResult OverwriteDir(Session session) 
{ 
    System.Diagnostics.Debug.WriteLine(session["tester"]); 
    session["tester"] = "C:\\newpath"; 
    return ActionResult.Success; 
} 

을 : 난 그냥 파일이 여전히 C에 설치되어있는 디버그 라인, 나는 그것이 호출되는 것을 알고 이렇게 기록 된 그것의 보는가?

답변

1

먼저 MSI 내부에 파일이 들어있는 폴더에 ID로 공용 설치 프로그램 속성 (이름에 소문자 없음)을 사용하는지 확인해야합니다. 가장 좋은 해결책은 TARGETDIR이 이미 구성 되었기 때문입니다.

그 후, 당신은 설치하는 동안 속성 값을 변경하려면 다음 사용자 지정 작업 중 하나를 사용할 수 있습니다

  • CostFinalize
  • 디렉토리를 변경하는 type 35 custom action 전에 예정 디렉토리 속성 값을 변경하는 사용자 지정 작업 경로 (CostFinalize 후에 예약해야 함)
+0

감사합니다! 방금 재산을 자본화하지 않았어. – aherrick

관련 문제