English 中文(简体)
在ViX,我如何测试甲骨干的登记处钥匙(非价值)的存在。 净额
原标题:
  • 时间:2009-08-25 09:50:40
  •  标签:

更具体地说,我要测试Oracle耗氧潜能吨。 净额安装在机器上。 我想通过测试《香港人权法案》。 NET 登记册钥匙。

发展局使用的实际价值。 Netsed in HKLMSOFTWAREORACLEODP.NET2.111.6。 我假定,随着Oracle公司公布最新情况,这一低级关键名称将发生变化。

我尝试了以下失败之处,可能是因为(违约)价值实际上不存在,或者可能是因为这一价值无效(不能确切地说,它如何在登记处代表)。

<Property Id="ORACLE_ODPNET">
  <RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWAREORACLEODP.NET" Name="(Default)"/>
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
  Installed OR ORACLE_ODPNET
</Condition>

因此,以下任何内容都对我有帮助:

  • A way to search for a registry key with no values under it.
  • A way to search for a registry value using a path containing wildcards
  • A better way to test for ODP.Net being installed
最佳回答

由于Sascha的信息,似乎答案是“你能够”利用在WiX的注册功能。

现在,我也希望这一试验与其他发射条件测试同时进行,这使得试验更加困难。 尽管现在我很简单,但我知道,这样做会如何拯救其他人同样的痛苦。

首先在您的WiX产品中创建一个属性:

<Property Id="ODPNETINSTALLED">0</Property>

其次,如果存在“1”关键和固定的耗氧潜能值网络,则会形成一种习俗行动。 我不想把习俗行动汇编成册,而如果你在视觉演播室使用,则会比较简单。 我的习俗行动守则是:

using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Win32;

namespace WiXCustomAction
{
  public class CustomActions
  {
    [CustomAction]
    public static ActionResult CheckOdpNetInstalled(Session xiSession)
    {
      xiSession.Log("Begin CheckOdpNetInstalled");

      RegistryKey lKey = Registry.LocalMachine.OpenSubKey(@"SOFTWAREORACLEODP.Net");

      xiSession["ODPNETINSTALLED"] = lKey == null ? "0" : "1";

      return ActionResult.Success;
    }
  }
}

现在,你们需要登记和安排行动,因为我想发出警告,与我不得不在《Install 资格要素:

<Binary Id="WiXCustomAction.dll" SourceFile="$(var.WiXCustomAction.TargetDir)$(var.WiXCustomAction.TargetName).CA.dll" />
<CustomAction Id="CheckOdpNet" BinaryKey="WiXCustomAction.dll" DllEntry="CheckOdpNetInstalled" Execute="immediate" />
<InstallUISequence>
  <Custom Action="CheckOdpNet" Before="LaunchConditions">NOT Installed</Custom>
</InstallUISequence>

最后添加一个发射条件,以检查财产:

<Condition Message="!(loc.OracleOdpCondition)">
  Installed OR ODPNETINSTALLED="1"
</Condition>

请注意,我认为,InstallUISequence的日程安排意味着在非倡议装置期间,海关行动胜诉。 然而,我的安装人必须安装“停止生产”装置,以免给我带来问题。

问题回答

Simply omit RegistrationSearch/@Name to have the "(Default) Value. 不幸的是,我不知道进行休养式搜查的方式,你再次需要挑选一个“已知”的登记册钥匙,在释放之间保持稳定,并将你从中搜寻。

<Property Id="ORACLE_ODPNET">
  <RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWAREORACLEODP.NET" />
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
  Installed OR ORACLE_ODPNET
</Condition>




相关问题
热门标签