2011-09-12 17 views
0

短いバージョンでは、インストーラパッケージをビルドしていますが、特定のレジストリキーが存在するかどうかに基づいて動作を変更するようにウェルカム画面の[次へ]この動作を得るために次のボタンのアクションの条件を変更できるはずですが、これまでのところ運がないようです。私はいつも行動Aまたは行動Bを得ている、私はレジストリ値に敏感な行動を得ていない。WiXレジストリ値に基づいてUIの動作を変更する

UIを完全に削除し、コマンドラインでパッケージを実行して目的の結果を得ることができますが、適切なときにインストールパスダイアログを追加することでユーザーフレンドリーになります。もう少し詳細に

...

私は独立した、しかし関連、クラスライブラリのシリーズのためのインストーラに取り組んでいます。クリーンボックスにライブラリをインストールする場合は、インストーラがインストールパスをユーザーに求め、インストールプロセス中にこのパスをレジストリに書き留めておきます。しかし、すでに他のライブラリの1つを持っているボックスにライブラリをインストールする場合は、インストーラがレジストリを読み込んで以前のインストールと同じパスを使用するようにします。

標準のWixUI_InstallDirインターフェイスを変更してレジストリ検索結果を確認し、InstallDirDlgが設定されている場合はスキップします。しかし、これは動作しているようには見えません。私の公開条件は、私はその後、私が取得することはありませんFOOPATHプロパティを使用するためにそれらを切り替えると、私はいつも、インストールディレクトリ]ダイアログボックスを取得する(示すように)PATHSETプロパティを使用している場合

<Property Id="FOOPATH"> 
    <RegistrySearch Id="PathSet" Type="directory" Root="HKLM" Key="Software\Foo" Name="InstallPath"></RegistrySearch> 
</Property> 
<Property Id="PATHSET"> 
    <RegistrySearch Id="PathSet" Type="directory" Root="HKLM" Key="Software\Foo" Name="InstallPath"></RegistrySearch> 
</Property> 

<Directory Id="FOOPATH" Name="Foo"> 
    <Component Id="FooPathReg" Guid="Some Guid"> 
    <RegistryKey Root="HKLM" Key="Software\Foo" Action="createAndRemoveOnUninstall"> 
     <RegistryValue Name="InstallPath" Type="string" Value="[FOOPATH]" KeyPath="yes"></RegistryValue> 
    </RegistryKey> 
    </Component> 
</Directory> 

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">NOT Installed AND NOT PATHSET</Publish> 
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">NOT Installed AND PATHSET</Publish> 

:ここではXMLからいくつかの切れ端がありますダイアログ。私もInstallUISequenceで試してみましたが、AppSearchアクションをどのくらい早くスケジュールするかは問題ではないようですが、私はまだ同じ結果を得ています。

シンプルなものがありますか?それとも別のアプローチをとる必要がありますか?

答えて

1

これは、私がテストプロセスで何かを逃した脳死の瞬間の1つであることが判明しました。私はそれが仕事に取り組んでいる間に私が経験した不満のいくつかを他人に救うという希望で失敗した理由の詳細を記入しています。

最初に複数のパッケージを実際にテストしていなかったことを知っておくことが重要です。基本構造を最初のパッケージで完成させようとしていたのですが、パッケージのグループ全体に複製するのに必要な変更の数を減らすのに役立ちました。これを行うために、以前にインストールしたものをシミュレートして、パッケージを実行する前に問題のレジストリエントリを手動で追加していました。

私が無視したことは実際にレジストリエントリによって参照されるディレクトリを作成することでした。私は同僚とプロセスを歩いていたし、それを説明する過程で、私は、ログのこのセクションに気づい:

Action start 8:26:16: AppSearch. 
MSI (c) (BC:D4) [08:26:16:505]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (BC:D4) [08:26:16:506]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (BC:D4) [08:26:16:507]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (BC:D4) [08:26:16:507]: PROPERTY CHANGE: Adding NETFRAMEWORK35 property. Its value is '#1'. 
Action ended 8:26:16: AppSearch. Return value 1. 

をそして、それのようにレジストリ値で参照されるディレクトリを作成しようとする私に起こりましたレジストリ値自体と同様に。ディレクトリがあると、すべてが正常に動作するようになりました。

RegistrySearcherに値がディレクトリであると言えば、そのディレクトリが実際に存在するときに値をプロパティに設定するだけです。この詳細は、トピックに関する私の検索では決して出てこなかったし、私が見つけた文書ではっきりしていない。

2
  1. 冗長なログを調べ、プロパティが期待通りに設定されているかどうかを確認します。
  2. Orcaを使用して、ControlEventが期待通りであるかどうかを確認してください。 UIが追加されているので、に在庫のUIをに置き換えて、追加の手順を実行する必要があります。たとえば、http://neilsleightholm.blogspot.com/2008/08/customised-uis-for-wix.htmlを参照してください。
+0

UIをカスタマイズしようとしたときに、あなたのリンクに概説されている一般的なプロセスに従いました。私はOrcaですべてが正しいと感じることができます。しかし、ログファイルを調べると、私のレジストリ検索は決して起こっていないようです。 – Rozwel

+0

Orcaを使用して、検索がAppSearchテーブルに存在することを確認します。 –

+0

彼らはテーブルにいました。私は実際の問題を追跡しました。助けてくれてありがとう。 – Rozwel

関連する問題