Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
属性值上的WiX自定义操作条件_Wix_Installation - Fatal编程技术网

属性值上的WiX自定义操作条件

属性值上的WiX自定义操作条件,wix,installation,Wix,Installation,我有一个依赖于博士后的课程。我制作的安装程序将为用户安装postgres;然而,我希望只有在尚未安装Postgres的情况下才会发生这种情况。我试图通过一个带有条件的自定义操作来实现这一点,但是,我似乎无法让它工作。任何帮助都将不胜感激。这就是我现在拥有的 <Property Id="POSTGRESINSTALLED"> <RegistrySearch Id="POSTGRESINSTALLED_SEARCH" Key="SOFTWARE\PostgreSQL\Insta

我有一个依赖于博士后的课程。我制作的安装程序将为用户安装postgres;然而,我希望只有在尚未安装Postgres的情况下才会发生这种情况。我试图通过一个带有条件的自定义操作来实现这一点,但是,我似乎无法让它工作。任何帮助都将不胜感激。这就是我现在拥有的

<Property Id="POSTGRESINSTALLED">
  <RegistrySearch Id="POSTGRESINSTALLED_SEARCH" Key="SOFTWARE\PostgreSQL\Installations\postgresql-x64-9.5" Root="HKLM" Type="raw" Name="Branding" />
</Property>

<InstallExecuteSequence>
  <Custom Action='postgres_install_action' After='vc_redist_install_action'> ( NOT POSTGRESINSTALLED ) OR ( REINSTALL ) </Custom>
</InstallExecuteSequence>

(未安装)或(重新安装)

不清楚哪个部分不工作,是检测还是安装

如果运行安装并生成日志(msiexec/I[path to msi]/l*vx[path to text log]),您将看到是否设置了POSTGRESINSTALLED\u搜索。安装不需要完成,因为搜索很早。假设您的总体思路是正确的,那么您还没有明确说明是搜索32位注册表还是搜索64位注册表。它可能只是找错了地方

如果搜索有效,那么安装很容易失败。自定义操作看起来是即时的(默认),因此它不会在提升状态下运行,因此可能会失败。vc redist安装自定义操作也是如此

安装先决条件的模式是首先使用捆绑包安装它们。这些应该会有帮助,但你应该这样做:


我刚刚发现了问题。我在注册表搜索中丢失了
Win64=“yes”
。没有注意到没有设置拱门,默认设置为x86。我来看看包裹。