2016-08-02 10 views
0

Ich versuche, zwei Standorte unterschiedliche installieren Tasten Radio einstellen (Single-User installiert zu AppData und allusers installiert zu Programfiles)wix gesetzt Standort variabel von Radio-Button installieren

Mein Eigentum ist wie folgt definiert:

<Property Id="INSTALLSCOPE" Secure="yes" /> 

Meine Auswahl Definitionen installieren sind wie folgt:

<Directory Id='TARGETDIR' Name='SourceDir'> 
     <Directory Id= 'INSTALLSCOPE' Name='AppData'> 
      <Directory Id='MYAPP' Name='COMPANY'> 
       <Directory Id='INSTALLDIR' Name='MyApp'> 

Mein Radio-Buttons sind wie folgt:

<Dialog Id="CustomInstallScopeDlg" Width="370" Height="270" Title="[ProductName] Install Scope" 
       NoMinimize="yes"> 

     <Control Id="RadioButtonGroupID" Type="RadioButtonGroup" X="30" Y="94" Width="305" Height="100" Property="INSTALLSCOPE"> 

      <RadioButtonGroup Property="INSTALLSCOPE"> 
       <RadioButton Value="LocalAppDataFolder" X="0" Y="0" Width="300" Height="10" Text="SingleUser"/> 
       <RadioButton Value="ProgramFilesFolder" X="0" Y="20" Width="300" Height="10" Text="AllUser"/> 
      </RadioButtonGroup> 

     </Control> 
      ... 

Nachdem die Radio-Buttons und NEXT-Taste geklickt wird geändert werden, geschieht Folgendes:

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" 
    Text="[ButtonText_Next]"> 
      <Publish Property="INSTALLSCOPE" Value="LocalAppDataFolder">INSTALLSCOPE = "LocalAppDataFolder"</Publish> 
      <Publish Property="INSTALLSCOPE" Value="ProgramFilesFolder">INSTALLSCOPE = "ProgramFilesFolder"</Publish> 
    </Control> 

Zeit, was geschieht, wenn ich laufe es ist es versucht, in E zu installieren: AppData, anstelle des korrekten AppData-Ordner. Auch das Installationsprogramm ist fehlerhaft und die Benutzeroberfläche wird nicht angezeigt. Dies passiert nicht, wenn ich den Wert LocalAppDataFolder fest codiere, anstatt ihn durch eine Variable zu übergeben. Ich habe den Installationsprozess protokolliert und kann den Wert von INSTALLSCOPE ändern, während ich das Installationsprogramm durchführe, aber die Benutzeroberfläche wird nie aktualisiert, um diese Änderung widerzuspiegeln, und auch der tatsächliche Installationspfad ändert sich nie. Jede Hilfe wäre großartig.

+0

Versuchen in Datei WixUI_Advanced.wxs zu suchen (wenn Sie noch nicht getan haben), wo UI-Vorlage mit Funktion implementiert ist, dass Sie implementieren möchten. Es kann dir helfen. Ich denke, dass der einfachste Weg ist, InstallScopeDlg-Objekte einfach von der UI-Vorlage zu kopieren und einen eigenen Klon von InstallScopeDlg.wxs zu erstellen und ihn nach Ihren Bedürfnissen zu bearbeiten oder Funktionen von dort zu kopieren. – Mischo5500

+0

Danke. Ich werde das untersuchen. Diese Vorlagen sind [hier] (https://github.com/AnalogJ/Wix3.6Toolset) gefunden und scheinen nicht mit neueren Versionen von Wix kompatibel zu sein. – user5521

+0

Es ist kein offizielles WiX-Repository, es befindet sich hier [link] (https://github.com/wixtoolset/). Letzte Woche habe ich Vorlagen von WiX4-Zweig zu WiX3.10-Toolset verwendet und es funktioniert ordnungsgemäß. – Mischo5500

Antwort

0

ein SetTargetPath Event hinzufügen:

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" 
    Text="[ButtonText_Next]"> 
    <Publish Property="INSTALLSCOPE" Value="LocalAppDataFolder">INSTALLSCOPE = "LocalAppDataFolder"</Publish> 
    <Publish Property="INSTALLSCOPE" Value="ProgramFilesFolder">INSTALLSCOPE = "ProgramFilesFolder"</Publish> 
    <Publish Event="SetTargetPath" Value="INSTALLSCOPE">1</Publish> 
</Control> 
+0

Das gibt einen Fehler: 'Das RadioButtonGroup-Element enthält ein unerwartetes Kindelement 'Publish'. – user5521

+0

Entschuldigung, ich habe den falschen Code aus dem Fragetext kopiert. Der Publish Event-Part sollte dem Control-Element hinzugefügt werden. Ich habe meine Antwort bearbeitet. – BBR