2017-11-09 23 views
0

インストーラをアンインストール/削除する際にインストーラがレジストリキーを復元/書き込みする必要があります。これを実現するには、カスタムアクションを使用してアンインストール時に.cmdファイルを呼び出します。注Wix:アンインストール時にレジストリキーを追加する

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" Name="RegOnUninstall" Language="1033" Version="1.0.0.0" Manufacturer="Testing" UpgradeCode="3dbec931-5475-40b3-a002-824c09aad36c"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 

    <Feature Id="ProductFeature" Title="RegOnUninstall" Level="1"> 
     <ComponentRef Id="RSS" /> 
    </Feature> 
    <Property Id="WixQuietExecCmdLine" Value="&quot;[#RSS.cmd]&quot; -RSS"/> 
    <CustomAction Id="SS" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="deferred" Return="check"/> 
    <InstallExecuteSequence> 
     <Custom Action="SS" Before="RemoveFiles">Installed AND REMOVE</Custom> 
    </InstallExecuteSequence> 
</Product> 

    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLFOLDER" Name="RegOnUninstall" > 
      <Component Id="RSS" Guid="*" > 
      <File Id="RSS.cmd" KeyPath="yes" Source="D:\Scripts\RestSS.cmd"/> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Fragment> 

:カスタムアクションは、この.CMDファイルを呼び出すスニペットれ

set SSKey=HKLM\Software\MyProduct\Installed Modules\TestModule 
reg.exe add "%SSKey%" /v AppName /d TestModule /f /reg:32 
reg.exe add "%SSKey%" /v Type /t REG_DWORD /d 7 /f /reg:32 
reg.exe add "%SSKey%" /v AppName /d TestModule /f /reg:64 
reg.exe add "%SSKey%" /v Type /t REG_DWORD /d 7 /f /reg:64 

ここ:ここではそのコードがこのカスタムアクションはWixUtilExtensionです。

インストーラは昇格特権を使用していますが、このスクリプトはHKLMに書き込むことができません。このため、インストーラはマシンからアンインストールできません。

管理者権限を持つコマンドプロンプトでこの.cmdスクリプトを実行すると正常に動作します。

私はManaged Custom Actionを書き込もうとしましたが、同様の問題、つまりHKLMに書き込めませんでした。

私の主な目的は、アンインストール時にレジストリキーを書き込むことです。

すべてのヘルプは本当にいただければ幸いです.... おかげ

答えて

0

おそらく、HKLMに書いている... 32ビットハイブHKLM \ SOFTWARE \ WOW6432NODE \マイ会社\私の製品を。

+0

はい、両方のハイブ –

関連する問題