2010-06-01 5 views
0

좋아, WiX로 할 수있는 유일한 방법을 결정했습니다 (이전 설치 관리자 덕분에 지금 업그레이드해야한다고 쓰여졌습니다). 일부 사용자 지정 작업.DTX가 포함 된 WiX 사용자 지정 작업 ... 매우 혼동 됨

기본적으로 RemoveExistingProducts 전에 파일을 백업하고 RemoveExistingProducts 이후에 해당 파일을 다시 복원해야합니다. 나는 이것이 "type 2 custom action"이라고 생각합니다.

그러나 내가 이해할 수있는 것은 처음에는 C# 동작 (파일이 WiX에서 가져온 디렉토리)에 데이터를 전달하는 방법과 내 C# (DTF ?) 액션을 Binary 및 CustomAction 태그와 함께 사용합니다.

또한이 모든 것이 태그에 있어야합니까? 모든 예는 그 방법을 보여줍니다. 여기

<Binary Id="backupSettingsAction.dll" 
      SourceFile="backupSettingsAction.CA.dll"/> 
    <CustomAction 
       Id="BackupSettingsAction" 
       BinaryKey="backupSettingsAction.dll" 
       DllEntry="CustomAction" 
       Execute="immediate" /> 

    <InstallExecuteSequence> 
     <Custom Action="backupSettingsAction.dll" Before="InstallInitialize"/> 
     <RemoveExistingProducts After="InstallFinalize" /> 
     <Custom Action="restoreSettingsAction.dll" After="RemoveExistingFiles"/> 
    </InstallExecuteSequence> 

내가 백업해야 할 파일은 이전의 설정 파일 (그대로 유지 필요가있는) 설치는 ... 내가 지금까지 .WXS 파일이 무엇인가, 그것을 디렉토리에 있습니다

<Directory Id="CommonAppDataFolder" Name="CommonAppData"> 
      <Directory Id="CommonAppDataPathways" Name="Pathways" /> 
     </Directory> 

를 그리고 이미 존재하는 파일을 백업해야하지만 심지어 그것을 위해 구성 요소 태그가 :

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes" > 
    <File Id="settingsXml" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" /> 
</Component> 

namespace backupSettingsAction 
{ 
    public class CustomActions 
    { 
     [CustomAction] 
     public static ActionResult CustomAction1(Session session) 
     { 
      session.Log("backing up settings file"); 

      //do I hardcode the directory and name of the file in here, or can I pass them in? 

      return ActionResult.Success; 
     } 
    } 
} 

어떤 도움을 크게 apprecaited된다

그리고 이것은 나를 위해 만든 비주얼 스튜디오 (2005)하는 C#을 파일을 참조한다. 고맙습니다!

답변

1

왜 잠시 동안 맞춤 동작이 필요한지 다시 생각해 볼 수 있습니까?

은 당신이 한 두 가지

1

)이 '자신의 구성 요소에 XML 파일을 넣어을 할 수 있어야 해결하고자하는 문제에 따라 키 파일로 표시하고 영구적으로 설정합니다.

2) 더미 DLL을 만들고 1.0.0.0 버전을 지정하십시오. 나중에이 DLL의 버전 번호를 증가시키지 마십시오. DLL이 keyfile로 설정되고 구성 요소가 영구적으로 설정된 구성 요소에 DLL 및 XML 파일을 저장하십시오.

이제 사용자 데이터를 포함하도록 수정되었는지 여부에 관계없이 주요 업그레이드를 수행하고 XML 파일의 내용을 유지할 수 있어야합니다.

+0

문제는 내가 작성하지 않은 이전 설치 관리자가 제거시 XML 파일을 삭제하려고한다는 것입니다. 여기까지 나를 이끄는 진보가 있습니다 ... http://stackoverflow.com/questions/2768701/stuck-on-preserving-config-file-in-wix-major-upgrade http : // https://adackoverflow.com/questions/2775763/problem-with-wix-major-upgrade http : //stackoverflow.com/questions/2951355/wix-major-upgrade-need-different-behaviors-for-different-components – Joshua

+0

아, 이제 알겠습니다. 이전에이 문제가 있었는데 이전 설치 프로그램을 "패치"하여 중요한 업그레이드를 위해 설치 프로그램을 호출하기 전에 문제를 변경했습니다. 그런 식으로 RemoveExistingProducts가 제거를 위해 이전 제품을 호출 할 때 잘못된 동작이 발생하지 않습니다. –

관련 문제