2017-11-23 16 views
0

は、ここで私は(私は他のいくつかのスタックオーバーフローの投稿や他の場所から集められたものに基づいているものだアンインストールするRemoveFolderExを使用する方法:再帰的にインストールにLOCALAPPDATAでフォルダを削除し、

<Property Id="CACHEFOLDER"> 
    <RegistrySearch Key="SOFTWARE\SIL\Transcelerator" Root="HKCU" Type="raw" 
    Id="CacheFolderRegSearch" Name="CachePath" /> 
</Property> 

<Directory Id="TARGETDIR" Name="SourceDir 
    <!-- Transcelerator's cache folder in LocalAppData: --> 
    <!-- C:\Users\<current user>\AppData\Local\SIL\Transcelerator --> 
    <!-- This needs to be saved to a registry key so it can be cleaned up on uninstall and also purged when there is a new install in order to ensure that reparsing occurs. --> 
    <?define AppCacheFolder = "SIL\Transcelerator" ?> 
    <Component Id="CacheCleanup" Guid="{6A45D61D-EA73-4A8C-8941-B49A881ABB49}"> 
    <RegistryValue Root="HKCU" Key="Software\SIL\Transcelerator" Name="CachePath" 
        Type="string" Value="[LocalAppData]$(var.AppCacheFolder)"     
        KeyPath="yes" /> 
    <util:RemoveFolderEx On="both" Property="CACHEFOLDER"/> 
    </Component> 

</Directory> 

<Feature Id="MainApplication" Title="App Name" Level="1" Absent="disallow" Display="expand" AllowAdvertise="no" InstallDefault="local"> 
    <ComponentRef Id="CacheCleanup" /> 
</Feature> 

注:最終的には、I 「ここに隠されたMainApplication機能を作りたいのですが、今のところ、それはそれを見るために慰めだ

でしょう私はWIXログファイルから関連の抜粋です何を考えている:。

AppSearch:不動産:CACHEFOLDER、署名: CacheFolderRegSearch MSI(c)(38:F0)[18:25:39:116]:プロパティ変更:CACHEFOLDERプロパティを追加しています。その値は 'SIL \ Transcelerator'です。 アクションが終了しました18:25:39:AppSearch。戻り値1

...

MSI(c)は(38:F0)[18:25:45:594]:サーバーへの切り替え:PARATEXT7 = "C:\プログラムファイル(x86の)\ 「PARATEXT7TEST = "C \ Paratext 7:\プログラムファイル(x86の)\ ParatextDir7Test" PARATEXT8 = "C \:\プログラムファイル(x86の)\ \ Paratext 8" PARATEXT8TEST = "C:\プログラムファイル(x86の)\ ParatextDir8Test \" PARATEXT75100ORGREATER = "C:\プログラムファイル(x86の)\ Paratext 7 \ Paratext.exe" CACHEFOLDER = "SIL \ Transcelerator" TARGETDIR = "C:\" INSTALLDIR7 = "C:\プログラムファイル(x86の)\ Paratext 7 \プラグイン\ Transcelerator \ "INSTALLDIR7TEST = "C:\プログラムファイル(x86の)\ ParatextDir7Test \プラグイン\ Transcelerator \" INSTALLDIR8 = "C:\プログラムファイル(x86の)\ Paratext 8 \プラグイン\ Transcelerator \" INSTALLDIR8TEST =" C:\プログラムファイル(x86)\ ParatextDir8Test \ plugins \ Transcelerator \ "PLUGINDIR7 =" C:\ Program Files(x86)\ Paratext 7 \プラグイン\ "PLUGINDIR7TEST = "C:\プログラムファイル(x86の)\ ParatextDir7Test \プラグイン\" PLUGINDIR8 = "C:\プログラムファイル(x86の)\ Paratext 8 \プラグイン\" PLUGINDIR8TEST =" C:\プログラムファイル(x86の)\ ParatextDir8Test \プラグイン\」はcurrentDirectory = "C:プロジェクト\ \ Transcelerator" CLIENTUILEVEL = "0" CLIENTPROCESSID = "17976" SOURCEDIR = "C:プロジェクト\ \ Transcelerator \出力\インストーラ\" ACTION = "" INSTALL EXE

...

MSI(S)(E4:44)[18:25:46:006]:PROPERTY CHANGE:CACHEFOLDERプロパティを追加します。その値は 'SIL \ Transcelerator'です。

...

アクション午後06時25分46秒:WixRemoveFoldersEx。 アクション開始18:25:46:WixRemoveFoldersEx。 MSI(E4:00)[18:25:46:041]:リモートカスタムアクションを呼び出します。 DLL:C:¥Windows¥Installer¥MSI6019.tmp、Entrypoint:WixRemoveFoldersEx MSI(E4:78)[18:25:46:042]:ランダムなクッキーを生成する。 MSI(E4:78)[18:25:46:044]:PID 18712(0x4918)のカスタムアクションサーバーを作成しました。 MSI(E4:54)[18:25:46:067]:サービスとして実行しています。MSI(E4:54)[18:25:46:069]:こんにちは、私はあなたの32ビット偽装カスタムアクションサーバーです。 WixRemoveFoldersEx:再帰パス:行のSIL \ Transcelerator \:wrfA9D8B049E87ACFF02034C5FFCFB64E42。 WixRemoveFoldersEx:検索パスが見つかりません:SIL \ Transcelerator * アクションは18:25:46:WixRemoveFoldersExで終了しました。戻り値1

...

MSI(S)(E4:44)[18:267:25:46]:実行OP:ComponentRegister(COMPONENTID = {6A45D61D-EA73-4A8C-8941- B49A881ABB49}、キーパス= 01:\ SOFTWARE \ SIL \ Transcelerator \ CachePath、状態= 3、ディスク= 1、SharedDllRefCount = 0、BinaryType = 0) 1:{97A212AC-E01E-486A-A220-AF9BBBC79E87} 2 { 6A45D61D-EA73-4A8C-8941-B49A881ABB49} 3:01:¥Software¥SIL¥Transcelerator¥CachePath

...

MSI(E4:44)[18:25:46:597]:実行中:RegOpenKey(ルート= -2147483647、キー=ソフトウェア\ SIL \ Transcelerator、BinaryType = 0 ,,) MSI WriteRegistryValues:キー:\ Software \ SIL \ Transcelerator、名前:CachePath、値:SIL \ Transcelerator、名前:CachePath、値:SIL \ Transcelerator、値:SIL \ Transcelerator

...

プロパティ(S):CACHEFOLDER = SIL \ Transcelerator

関連何もレジストリに追加取得しているようです。 (ある時点では、アンインストールアクションを実行するように指示するために正しいGUIDを追加していたようだが、今は変更した内容を理解できないとわからない。)また、Cのファイルやサブフォルダもない: \ Users \ bogle \ AppData \ Local \ SIL \ Transceleratorは、インストール時またはアンインストール時に削除されています。また、On = "both"からOn = "Uninstall"に変更してみました。

+0

"SIL \ Transcelerator"は有効なフルパスではありませんか? RemoveFolderExのプロパティ属性に関する情報は、「ソースディレクトリの完全パスに解決されるプロパティのID」と表示されます。CACHEFOLDERを「C:\ Users \ bogle \ AppData \ Local \ SIL \ Transcelerator」にします。 –

+0

はい、しかし、私はそれが起こる方法を理解できません。 –

+0

[この記事](https://stackoverflow.com/questions/47195875/wix-remove-localappdata-appdata-local-my-app-folder-on-uninstall)などによると、[LocalAppData]をRegistryKeyのValue属性は、現在のユーザーのAppData \ Localフォルダにルートされたパスを追加する必要がありますが、それは私のためには機能しません。 –

答えて

0

私が本当にやる必要があったのは、現在のユーザーだけでなく、すべてのユーザーのキャッシュファイルをクリアしていたためです。インストーラは常に高い権限で実行されるため、これは特に当てはまります。したがって、現在のユーザーは、実際に気にしているユーザーではありません。私は、元の問題は未解決のままであることを指摘します。誰かが問題を見つけ出し、他の人に役立つ代替の回答を投稿することができれば、それは役に立つかもしれません。

0

LocalAppDataではなく、ディレクトリプロパティの名前はLocalAppDataFolderです。これは定義されていないので、空の文字列で、RemoveFolderExのパスは無効です(したがってSearch path not found: SIL\Transceleratorエラー)。

関連する問題