OK、Saschaの情報のおかげで、その答えは組み込みのWiXレジストリ関数を使って "できません"と思われます。
もう少し難しくなる他の起動条件テストと一緒にこのテストを実行したかったのです。これがうまくいくと、私はかなり時間がかかりましたが、今はかなりシンプルです。どのようにすればいいのでしょうか。そうすれば、誰かに同じ痛みを救うことができます。
まず、あなたのWiX製品内部のプロパティを作成します。
<Property Id="ODPNETINSTALLED">0</Property>
を次にそれが存在する場合に「1」ODPNETINSTALLEDキーとセットをチェックするためにカスタムアクションを作成します。私はここでコンパイルしてカスタムアクションをインストーラに追加するつもりはありませんが、Visual StudioでVotiveを使用するとかなり簡単です。私のカスタムアクションのためのコードは次のとおりです。
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>
最後にプロパティをチェックする起動条件を追加します。私はscheduliと信じ
<Condition Message="!(loc.OracleOdpCondition)">
Installed OR ODPNETINSTALLED="1"
</Condition>
注意InstallUISequenceでは、UI以外のインストール中にカスタムアクションが起動されないことを意味します。しかし、私のインストーラにはUIがインストールされている必要がありますので、それは私の問題ではありません。
出典
2009-08-27 10:14:03
Dan
ありがとうございました! 、ここで説明したように、私はカスタムアクションを使用:[http://stackoverflow.com/a/1340107][1] [1]:http://stackoverflow.com/a/1340107 – Viktor
Default値を取得するには、Name属性を省略する必要があります。 –