1

インストール時にXMLファイルに追加した要素をアンインストールするときに削除するのに問題があります。これが私のセットアップです:XMLファイルはインストール前にマシン上にすでに存在し、このインストーラーはアプリケーションへの「アドイン」用であるため、インストール後に削除することはできません。インストール時にXMLファイルにいくつかの要素を追加しますが、アンインストール時にそれらの要素の一部を削除したいだけです。

オンラインで回答を探していますが、自分の状況に合ったものが見つかりません。この投稿の構文をコピーしようとしました:WiXでXML要素を削除しますが、それでも機能しません。ただし、インストール時に既存の要素を削除して、要素がすでに存在する場合はインストール時に置換を実行します。つまり、要素の削除はインストール時に機能しますが、まったく同じタグを使用します(Idattrもちろん)アンインストールでは機能しません。

これが私のコードです:

<Component Id="C_Component" Guid="GUID-HERE">
    <File Id="MainProductFile" ... />
    <!-- XmlConfigs for installation are here -->
    <util:XmlConfig Id="XMLDEL_binding"
              File="[FILE_DIR_PATH]\File.config"
              Sequence="1"
              On="uninstall"
              Action="delete"
              ElementPath="/configuration/system.serviceModel/bindings/customBinding"
              VerifyPath="/configuration/system.serviceModel/bindings/customBinding/binding[\[]@name='!(wix.binding.name)'[\]]"
              Node="element" />
    <util:XmlConfig Id="XMLDEL_endpoint"
              File="[FILE_DIR_PATH]\File.config"
              Sequence="2"
              On="uninstall"
              Action="delete"
              ElementPath="/configuration/system.serviceModel/client"
              VerifyPath="/configuration/system.serviceModel/client/endpoint[\[]@name='!(wix.endpoint.name)' and @bindingConfiguration='!(wix.endpoint.bindingConfiguration)'[\]]"
              Node="element" />
</Component>
4

1 に答える 1

1

私はついに問題を理解しました。[FILE_DIR_PATH]私はそれがアンインストールに価値がないことに気づきました。このプロパティはによって取得されましたRegistrySearch。だから、それを修正するために私がしなければならなかったのは、プロパティを次のように宣言することだけでしたSecure

<Property Id="FILE_DIR_PATH" Secure="yes">
    <RegistrySearch ... />
</Property>

別のインストーラーで修復の問題を修正しようとしているときに、これでいくつかの問題が解決することがわかりました。私はこの投稿が役に立ちました:Wixインストーラーは修復時にレジストリ設定を空白にします

また、Rob Menschingによるブログ投稿がこの種の問題に役立つこともわかりました:http://robmensching.com/blog/posts/2010/5/2/The-WiX-toolsets-Remember-Property-pattern

于 2012-12-18T18:11:52.850 に答える