にWiXい試験の存在のレジストリキー(価値)Oracle ODP.Net
質問
具体的にはいるかどうかを試験Oracle ODP.Net を設置しました。したいと思い、この試験のためのHKLM\SOFTWARE\ORACLE\ODP.NET レジストリキーです。
実際の値が使用ODP.Net 格納されHKLM\SOFTWARE\ORACLE\ODP.純\2.111.6.20しになっているのでしょうかこの低レベルのキー名の変更として更新されますので、Oracle社
しかし、以下のよるに失敗したあの(デフォルト値が存在していませんまたはあるのですがnullの場合(なんなのかどのように表されているレジストリ).
<Property Id="ORACLE_ODPNET">
<RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWARE\ORACLE\ODP.NET" Name="(Default)"/>
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
Installed OR ORACLE_ODPNET
</Condition>
なので次のいず考にしたいと思い:
- る方法を検索するレジストリキー のない値下します。
- る方法を検索するレジストリ値 使用パスを含むワイルドカード
- よりよい方の試験を実施ODP.Net に搭載すること
解決
OKなのでおかげSaschaの情報その答えは"できない"のでWiXレジストリ機能
今はもうこの試験はんの開始条件の試験で同期することにより、少し硬くなっていきます。これだけの仕事をしていないシンプルなものになんかいこまで保存し他の誰かが同じ痛みました。
最初のプロパティを作成します内WiX商品:
<Property Id="ODPNETINSTALLED">0</Property>
次に作成カスタムアクションをチェックをキーとセットODPNETINSTALLED"1"の場合世界最大の国際人権ngoです。てるつもりはありませんへの集計に加え、カスタムアクションのインストーラることができるのでかなり簡単にご利用の場合奉納できます。このコードのために私のカスタムアクションは:
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(@"SOFTWARE\ORACLE\ODP.Net");
xiSession["ODPNETINSTALLED"] = lKey == null ? "0" : "1";
return ActionResult.Success;
}
}
}
現在の登録が必要とスケジュールアクションにしたいので、警告が自分がその他の開始に条件があったので追加でインストールUI配列要素:
<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のカスタムアクションな燃焼時の際のUI設.しかし、インストーラーなUIトな問題でした。
他のヒント
単に省略RegistrySearch/@名"を取得します(デフォルト)"。残念ながらこん私が認識しい再帰的な検索する必要が選択される"レジストリキーとなる安定した間スリリースやベース検索条件から。
<Property Id="ORACLE_ODPNET">
<RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWARE\ORACLE\ODP.NET" />
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
Installed OR ORACLE_ODPNET
</Condition>