WiX注册表搜索条文件名
我正在构建一个WiX安装程序,我想在其中对第三方应用程序的安装目录进行注册表搜索。我感兴趣的第三方应用程序在HKLM下创建了一个注册表项,该注册表项不仅指向安装目录,还包括文件名和扩展名(即C:/Program Files/MyApp/MyApp.exe)。我需要的只是实际的父目录(即C:/Program Files/MyApp),这样当我进行目录/文件搜索时,它就会在正确的位置上。有没有办法修改从注册表搜索返回的@Property,使其只包含父目录并去掉文件名和扩展名?以下是我所拥有的:WiX注册表搜索条文件名,wix,Wix,我正在构建一个WiX安装程序,我想在其中对第三方应用程序的安装目录进行注册表搜索。我感兴趣的第三方应用程序在HKLM下创建了一个注册表项,该注册表项不仅指向安装目录,还包括文件名和扩展名(即C:/Program Files/MyApp/MyApp.exe)。我需要的只是实际的父目录(即C:/Program Files/MyApp),这样当我进行目录/文件搜索时,它就会在正确的位置上。有没有办法修改从注册表搜索返回的@Property,使其只包含父目录并去掉文件名和扩展名?以下是我所拥有的: &l
<Property Id="MYAPPINSTALLFOLDER">
<RegistrySearch Id='InstallPathRegistry'
Type='raw'
Root='HKLM'
Key='SOFTWARE\Company\SomeLongPath'
Name='FileName'
Win64='yes'/>
</Property>
<Property Id="ISINSTALLED">
<DirectorySearch Id="CheckFileDir" Path="[MYAPPINSTALLFOLDER]" Depth="0">
<FileSearch Id="CheckFile" Name="myapp.exe" />
</DirectorySearch>
</Property>
创建一个单独的类,您可以在其中添加自己的自定义操作:
public static class InstallCustomActions
{
[CustomAction]
public static ActionResult GetDirectoryFromPath(Session session)
{
string fullPath = session["MYAPPINSTALLFOLDER"];
session["MYAPPINSTALLFOLDER"] = Path.GetDirectoryName(fullPath); //You can also create a separate property. In that case I would rename MYAPPINSTALLFOLDER to MYAPPFULLPATH.
}
}
然后声明CustomAction(在Product.wxs或单独的.wxi文件中):
然后您可以在UISequence中调用它,例如:
<Publish Dialog="MyDlg" Control="Next" Event="DoAction" Value="GetDirectoryFromPath" Order="1">1</Publish>
1
如果有什么不清楚的地方,请告诉我。这是基于一个正在工作的项目,但我还没有测试这个特定的代码修改后,以符合您的要求
<Publish Dialog="MyDlg" Control="Next" Event="DoAction" Value="GetDirectoryFromPath" Order="1">1</Publish>