2017-08-04 30 views
1

我想設置爲我的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位系統上運行這個。

回答

1

在64位系統上,通常在「HKLM \ Software \ ExampleSoftware」中找到的32位軟件註冊表項在「HKLM \ Software \ WOW6432Node \ ExampleSoftware」中找到。檢查here以獲取更多信息。

+0

應該補充說,如果你要設置一個64位的註冊表項時,必須設置'組件/ @ Win64中=「是」',也通過指定'的光-arch x64'創建64位包.exe命令行。 – zett42