RemoveFolderEx
을 사용하여 앱을 제거 할 때 내 설치 폴더에서 한 수준 위로 폴더를 삭제하려고합니다. 여기에 내가 무엇을 가지고,하지만 작동하지 않습니다 :WiX 3.7의 절대 경로와 상대 경로 결합
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="MyAppBaseFolder" Name="MyAppID">
<Directory Id="INSTALLFOLDER" Name="MyAppLauncher">
<Directory Id="UPDATESCRIPTSFOLDER" Name="Scripts" />
<Component Id="CleanupMainApplicationFolder" Guid="*">
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp ID\MyApp ID Windows Client" Name="Path" Type="string" Value="${path::getfullpath(path::combine([INSTALLFOLDER],'..\MyApp'))}" KeyPath="yes" />
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="MyApp ID"/>
</Directory>
</Directory>
</Fragment>
MSI는 잘 구축 할 것입니다,하지만 난 설치 프로그램을 실행할 때이 RegistryValue
요소에 실패하고 경로에 ".."에 대해 불평 것 같다 . 내가 만들고있는 문자열은 "C:\Program Files (X86)\MyApp ID\MyAppLauncher\..\MyApp"
입니다. 내가 해결해야합니다 : "C:\Program Files (X86)\MyApp ID\MyApp"
.
나는 ${path:: ... }
에 익숙하지 않습니다. 내가 ${path::combine()}
와 함께 몇 가지 예를 보았으므로 .NET에서 getfullpath
과 작동한다고 가정합니다. 어쩌면 내 구문이 잘못된 것일까?
감사합니다.
편집 : 죄송합니다. ${path::combine...
은 BUILDING WIX에서 가져온 것입니다. 해당 기사의 내용을 완전히 읽지 않은 상태입니다. wxs 파일과는 아무런 관련이 없습니다. NAnt입니다 (아래 언급 된 Rob과 같습니다). 그래서 내 질문에 간단하게 : 어떻게 결합하고 C:\Program files (X86)\MyApp ID\MyAppLauncher\..\MyApp
같은 절대 및 상대 경로를 해결할 수 있습니다. 감사합니다
EDIT2 : 다시 한번 감사드립니다. Rob, 나는 새로운 팁을 단순히 언급하는 가장 명백한 해결책조차 생각하지 않은 경로를 해결하는 데 너무 많은 노력을 기울였습니다. <Directory
요소.
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\MyApp ID\MyApp ID Windows Client" Root="HKLM" Type="raw" Id="APPLICATIONFOLDER_REGSEARCH" Name="Path" />
</Property>
<Property Id="PRINTERFOLDER">
<RegistrySearch Key="SOFTWARE\MyApp ID\MyApp ID Printer" Root="HKLM" Type="raw" Id="PRINTERFOLDER_REGSEARCH" Name="Path" />
</Property>
...
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="MyAppBaseFolder" Name="MyAppID">
<Directory Id="INSTALLFOLDER" Name="MyAppLauncher">
<Directory Id="UPDATESCRIPTSFOLDER" Name="Scripts" />
<Component Id="CleanupMainApplicationFolder" Guid="*">
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp ID\MyApp ID Windows Client" Name="Path" Type="string" Value="[LM_INSTALLFOLDER]" KeyPath="yes" />
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
<RegistryValue Root="HKLM" Key="SOFTWARE\MyApp ID\MyApp ID Printer" Name="Path" Type="string" Value="[LMP_INSTALLFOLDER]" />
<util:RemoveFolderEx On="uninstall" Property="PRINTERFOLDER" />
</Component>
</Directory>
<Directory Id="LM_INSTALLFOLDER" Name="MyApp" >
</Directory>
<Directory Id="LMP_INSTALLFOLDER" Name="MyAppPrinter" >
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="MyApp ID"/>
</Directory>
</Directory>
</Fragment>
고마워요 (다시) 롭! 나는 당신이 당신의 대답을 쓸 때 나의 포스트를 업데이트하고있었습니다. 실제로 그것은 NAnt입니다. 내 XML에 임의의 코드를 붙이기 전에 기사를 조금 더 자세히 읽어야한다. :) 나는 지금 당신의 제안을 시도 할 것입니다. –