WiX에서 대상 컴퓨터의 임시 숨김 폴더 (예 : SUPPORTDIR IS)를 설치하는 동안 설치하는 방법과 파일을 추가하는 방법을 이진 테이블에 저장하는 방법 설치가 wix에서 완료된 후에 삭제할 수 있습니까?설치 중에 임시 폴더 만들기
도움에 감사드립니다.
감사합니다.
WiX에서 대상 컴퓨터의 임시 숨김 폴더 (예 : SUPPORTDIR IS)를 설치하는 동안 설치하는 방법과 파일을 추가하는 방법을 이진 테이블에 저장하는 방법 설치가 wix에서 완료된 후에 삭제할 수 있습니까?설치 중에 임시 폴더 만들기
도움에 감사드립니다.
감사합니다.
이것은 내 의견에서 참조한 the idea을 확장 한 샘플 솔루션입니다.
간단히 말해서, 이진 테이블에 추가 파일을 추가하여 솔루션을 복잡하게 만들 필요가 없습니다. 사용자 지정 작업에서 추출하고 나중에 제거하십시오. DTF 커스텀 액션에 내장 된 메커니즘이 당신을 대신합니다.
설치 로그 파일에 정보를 출력하기 위해 사용자 지정 작업에서 읽을 XML 파일이 있다고 가정 해 보겠습니다. 먼저 VS (파일 -> 새로 만들기 -> 프로젝트 ...)에서 사용자 지정 동작 프로젝트를 만들고 "C# 사용자 지정 동작 프로젝트"템플릿을 선택해야합니다.
그런 다음 XML 파일을 컨텐츠로 추가하십시오. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가 -> 새 항목 ...을 선택하고 XML 파일을 선택하십시오. data.xml
이라고합시다. 내용은 다음과 같습니다
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<setting name="a" value="one" />
<setting name="b" value="two" />
</settings>
다음,이 XML의 값을 읽고 설치 로그에 뭔가 작성하는 몇 가지 코드를 추가 (기억을, 그냥 샘플입니다) :
[CustomAction]
public static ActionResult ReadXml(Session session)
{
var doc = XDocument.Load("data.xml");
var settings = from setting in doc.Descendants("setting")
select new
{
Name = setting.Attribute("name").Value,
Value = setting.Attribute("value").Value
};
foreach (var setting in settings)
{
session.Log(string.Format("{0} = {1}", setting.Name, setting.Value));
}
return ActionResult.Success;
}
주 data.xml
과 같이 XML 파일을 참조한다. 사용자 지정 작업이 실행될 때 파일은 실행되는 디렉터리와 동일한 디렉터리에서 찾을 수있다.
마지막으로, 설치 과정에 사용자 지정 작업을 추가, 이제
<Binary Id="MainBinary" SourceFile="bin\ExtraFiles.CA.dll" />
<CustomAction Id="ReadXmlCA" BinaryKey="MainBinary" DllEntry="ReadXml" Execute="deferred" />
<InstallExecuteSequence>
<Custom Action="ReadXmlCA" After="InstallFiles" />
</InstallExecuteSequence>
MSI 패키지를 구축하고 설치를 다음과 같은 방법으로 실행
패키지 설치가 완료msiexec -i SupportDir.msi /l*v install.log
오픈 install.log
파일을 검색하여 CustomActions.ReadXml
을 검색하십시오.
SFXCA: Extracting custom action to temporary directory: C:\Windows\Installer\MSIAB8D.tmp-\
SFXCA: Binding to CLR version v4.0.30319
Calling custom action ExtraFiles!ExtraFiles.CustomActions.ReadXml
a = one
b = two
물론, 사용자 지정 작업이 일을하고있다 : 당신은 같은 것을 볼 수는 로그 파일에 XML 파일의 내용과 출력 적절한 정보를 읽어보십시오. 참고로 한 가지 더 : 임시 디렉토리 경로. 해당 디렉토리를 탐색 해보십시오. 디렉토리가 비어 있음을 알 수 있습니다.
이것은 DTF가 사용자 지정 작업 코드에서 파일을 사용할 수 있도록 파일을 추출하고 작업 완료 후 정리하는 데주의를 기울 였음을 의미합니다.
이 개요가 작동 방식을 이해하는 데 도움이되기를 바랍니다.
어떤 이유로 Windows Installer가 임시 폴더를 변경하기 때문에이 솔루션이 작동하지 않습니다. –
이 설명은 도움이 될 수 있습니다. http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Extract-Binary-file-from-MSI-to-Temp-folder-using-C -td7588682.html # a7588730 –
또한 http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/SUPPORTDIR-for-WIX-td2389950.html 및 this http://stackoverflow.com/questions/2624603/wix-a-temporary-file-during-install을 이해하는 것이 도움이 될 수 있습니다. –
@Yan : 답변 해 주셔서 감사합니다.나는 전에 그것을 읽었습니다. 그러나 나는 C# DTF를 다루는 방법을 모른다. – sam