2016-11-21 1 views
0

Ich benutze angepasste UI, die in einer Reihe von verschiedenen Ansichten wie installview, progressview, finishview, uninstallview usw. funktioniert. Im benutzerdefinierten Installer gibt es zwei Möglichkeiten, die man ändern kann Installationsverzeichnis und anderes, um das Datenbankverzeichnis zu ändern. Mein benutzerdefiniertes Installationsprogramm enthält zwei MSI. Immer wenn ich versuchte, das Datenbankverzeichnis an die MSI zu übergeben, wird es nicht übersteuert. Es nimmt immer den Standardpfad ein.Wix ist nicht erlaubt den Benutzer das Verzeichnis zu überschreiben

Mein benutzerdefiniertes Installationsprogramm enthält eine Variable für die Datenbank, die überfällig ist, und übergibt den Wert an die msi.

<Variable Name="DatabaseFolder" bal:Overridable="yes" Type="string" Value="[CommonAppDataFolder]$(var.ManufacturerName)\$(var.ProductName)" /> 


<MsiPackage Id="StorageApp" 
       DisplayInternalUI="no" 
       DisplayName="$(var.StorageApp)" 
       Permanent="no" 
       Visible="yes" 
       Vital="yes" 
       SourceFile="$(var.StorageAppExe)" 
       Compressed="yes"> 
       <MsiProperty Name="DATABASEAPPDATAFOLDER" Value="[DatabaseFolder]" /> 
    </MsiPackage> 

Standardmäßig wird DatabaseProductName als Verzeichnisname verwendet. Aber wenn ich das Verzeichnis änderte, nahm es immer den Standardpfad. Warum ich den Standardwert nicht überschreiten konnte. Fehlt etwas in meinem Code?

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="CommonAppDataFolder"> 
    <Directory Id="CompanyAppDataFolder" Name="$(var.DatabaseManufacturerName)"> 
     <Directory Id="DATABASEAPPDATAFOLDER" Name="$(var.DatabaseProductName)"> 
     </Directory> 
    </Directory> 
    </Directory> 
</DirectoryRef> 

Antwort

0

nicht sicher, was Sie mit meinem „Aber wenn ich das Verzeichnis geändert ...“. Haben Sie den Wert $ (var.DatabaseProductName) oder nur Directory Id geändert?

Stellen Sie sicher, Ihre Verzeichnisstruktur überprüfen, indem Sie einen Verzeichnisnamen direkt in der Einstellung "Name =" Attribut stattdessen einen Wert durch $ zugeben (var.DatabaseProductName)

Beispiel:

<DirectoryRef Id="TARGETDIR"> 
    <Directory Id="CommonAppDataFolder"> 
    <Directory Id="CompanyAppDataFolder" Name="Folder1"> 
     <Directory Id="DATABASEAPPDATAFOLDER" Name="SubFolder1"> 
     </Directory> 
    </Directory> 
    </Directory> 
</DirectoryRef> 

Nur eine Erinnerung. Die Verzeichnis-ID dient nur dazu, Ihren Ordner an anderer Stelle in Ihrer .wxs-Datei zu referenzieren. Die Zeichenfolge, die Sie für das Attribut "Name =" eingeben, ist der tatsächliche Name Ihres Ordners, wenn Sie Ihre Anwendung installieren.

Verwandte Themen