2010-05-25 4 views
0

msi 설치 프로그램에서 특정 위치에 폴더 세트를 생성하고 각 디렉토리에 더미 파일을 넣을 수 있습니다.텍스트 파일에서 폴더를 만들고 CustomAction을 사용하여 더미 파일을 배치하십시오.

현재 내가 가지고있는 다음의 CustomActions :

<CustomAction Id="SMC_SetPathToCmd" Property="Cmd" Value="[SystemFolder]cmd.exe"/> 
<CustomAction Id="SMC_GenerateMovieFolders" Property="Cmd" ExeCommand="for /f &quot;tokens=* delims= &quot; %a in ([MBSAMPLECOLLECTIONS]movies.txt) do (echo %a)" /> 
<CustomAction Id="SMC_CopyDummyMedia" Property="Cmd" ExeCommand="for /f &quot;tokens=* delims= &quot; %a in ([MBSAMPLECOLLECTIONS]movies.txt) do (copy [MBSAMPLECOLLECTIONS]dummy.avi &quot;%a&quot;\&quot;%a&quot;.avi)" /> 

이이 InstallExecuteSequence에서 호출됩니다

<Custom Action="SMC_SetPathToCmd" After="InstallFinalize"/> 
    <Custom Action="SMC_GenerateMovieFolders" After="SMC_SetPathToCmd"/> 
    <Custom Action="SMC_CopyDummyMedia" After="SMC_GenerateMovieFolders"/> 

작업을 시작하는 것 사용자 정의,하지만 빈 명령 프롬프트 창이 표시되고 디렉토리가 생성되지 않습니다. 에서 CustomAction에 필요한

파일이 올바른 디렉토리에 복사됩니다

<Directory Id="WIX_DIR_COMMON_VIDEO"> 
    <Directory Id="MBSAMPLECOLLECTIONS" Name="MB Sample Collections" /> 
    </Directory> 

<DirectoryRef Id="MBSAMPLECOLLECTIONS"> 
    <Component Id="SampleCollections" Guid="C481566D-4CA8-4b10-B08D-EF29ACDC10B5" DiskId="1"> 
    <File Id="movies.txt" Name="movies.txt" Source="SampleCollections\movies.txt" Checksum="no" /> 
    <File Id="series.txt" Name="series.txt" Source="SampleCollections\series.txt" Checksum="no" /> 
    <File Id="dummy.avi" Name="dummy.avi" Source="SampleCollections\dummy.avi" Checksum="no" /> 
    </Component> 
</DirectoryRef> 

는 이러한 사용자 지정 작업에 어떤 문제 또는이 작업을 수행하는 간단한 방법은 무엇입니까?

답변

-1

명백한 문제는 이러한 사용자 지정 동작을 시퀀싱하는 방식으로 관리되는 (상승 된/UAC) 설치를 제대로 지원하지 않거나 복구, 롤백, 제거, 업그레이드 관점에서 MSI의 서비스 개념을 갖고 있지 않다는 것입니다.

정확히 무엇을하고 있는지 모른 채 정확한 조언을하는 것은 어렵습니다. 나는 최근에 사용자 당 Instal을 설치하고자하는 "샘플"이있는 SDK를 가진 고객이 있었다는 것을 알고 있습니다. 이 고객이 ZIP 파일을 배포하고 사용자에게 몇 가지 질문을하고 이러한 파일을 사용자 선택 디렉토리에 추출 할 수있는 간단한 winforms 앱을 작성하도록 설득했습니다. MSI의 발가락을 밟지 않고 샘플의 여러 인스턴스를 배포하고 삭제할 수 있습니다.

관련 문제