如何设置威克斯注册表值?

问题描述:

我想设置为我的WiX的我的安装位置的注册表值。 我想设置在LOCALMACHINE /软件 所以我用下面的维克斯文件的密钥。我没有得到任何生成错误,一切都正确,但没有设置注册表值。如何设置威克斯注册表值?

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 

    <?define engage.client.app_TargetDir=$(var.engage.client.app.TargetDir)?> 
    <Product Id="*" Name="EngageSetupCreator" Language="1033" Version="1.0.0.0" Manufacturer="KrimzenInc" UpgradeCode="PUT-GUID-HERE"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" AdminImage="yes" /> 

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

     <Feature Id="ProductFeature" Title="EngageSetupCreator" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 
     <ComponentGroupRef Id="ProductComponents2" /> 
     <ComponentRef Id="InstallRegistryComponent"/> 
     <!--<ComponentGroupRef Id="Assets"/>--> 
     </Feature> 
    </Product> 
    <Fragment> 
     <SetDirectory Id="INSTALLFOLDER" Value="[WindowsVolume]Engage" /> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="WINDOWSVOLUME"> 
     <Directory Id="SUB_FOLDER" Name="Engage"> 
      <Directory Id="INSTALLFOLDER" Name="EngageSetupCreator" > 
      <Component Id="InstallRegistryComponent" Guid="*"> 
      <RegistryKey Id='ChessInfoBarInstallDir' Root='HKLM' Key='Software\Crimson\Engage' Action='createAndRemoveOnUninstall' > 
       <RegistryValue Type='string' Name='InstallDir' Value="[INSTALLFOLDER]" Action="write" KeyPath="yes" /> 

      </Component> 
      </Directory> 
      </Directory> 
     </Directory> 
     </Directory> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 

     <Component Id="engage.client.app.exe" Guid="*"> 
     <File Id="engage.client.app.exe" Name="engage.client.app.exe" Source="$(var.engage.client.app_TargetDir)engage.client.app.exe" /> 
     </Component> 


     <Component Id="CefSharp.BrowserSubprocess.exe" Guid="*"> 
     <File Id="CefSharp.BrowserSubprocess.exe" Name="CefSharp.BrowserSubprocess.exe" Source="$(var.engage.client.app_TargetDir)CefSharp.BrowserSubprocess.exe" /> 
     </Component> 

     </ComponentGroup>--> 



     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch KrimzenEngage" /> 

    <!-- Step 3: Include the custom action --> 
    <Property Id="WixShellExecTarget" Value="[#engage.client.app.exe]" /> 
    <CustomAction Id="LaunchApplication" 
     BinaryKey="WixCA" 
     DllEntry="WixShellExec" 
     Impersonate="yes" /> 

    </Fragment> 

</Wix> 

但它没有设定值。 什么IAM做错了什么?我在64位系统上运行这个。

在64位系统上,通常在“HKLM \ Software \ ExampleSoftware”中找到的32位软件注册表项在“HKLM \ Software \ WOW6432Node \ ExampleSoftware”中找到。检查here以获取更多信息。

+0

应该补充说,如果你要设置一个64位的注册表项时,必须设置'组件/ @ Win64中=“是”',也通过指定'的光-arch x64'创建64位包.exe命令行。 – zett42