Ich schrieb meine eigene Installer-Benutzeroberfläche mit Burn Bootstrapper. Es hat ein WPF-Frontend. Ich habe eine EXE mit 3 MSI Pacakges enthalten. Also, wenn ich versuche, es auf einem Datenträger mit nicht genügend Speicherplatz zu installieren, wie kann ich ein Dialogfeld Fehlermeldung in meiner Installer-Benutzeroberfläche anzeigen? Gibt es einen Callback, mit dem ich herausfinden kann, ob genügend Speicherplatz vorhanden ist? Bitte um Rat.Wie zeigt man nicht genügend Speicherplatz in Bootstrapper-Anwendungen an?
1
A
Antwort
2
Ich bin dabei, das gleiche zu tun.
Das Geheimnis ist das Lesen und Parsen der BootstrapperApplicationData.xml. Sie können dann das InstalledSize-Attribut aus dem WixPackageProperties-Element verwenden. Dieser Link Getting Display Name from PackageID zeigt Ihnen, wie Sie diese Datei zur Laufzeit lesen. Beachten Sie, dass Sie die InstalledSize der entsprechenden Struktur hinzufügen müssen.
Es liegt an Ihnen, den Speicherplatz im Vergleich zur Summe dieser Nummern zu überprüfen und dies dem Benutzer vor der Installation mitzuteilen.
Dies ist eine copy/paste des einige meines Code:
using System.Collections.ObjectModel;
using System.Xml.Serialization;
public class PackageInfo
{
[XmlAttribute("Package")]
public string Id { get; set; }
[XmlAttribute("DisplayName")]
public string DisplayName { get; set; }
[XmlAttribute("Description")]
public string Description { get; set; }
[XmlAttribute("InstalledSize")]
public int InstalledSize { get; set; }
}
[XmlRoot("BootstrapperApplicationData", IsNullable = false, Namespace = "http://schemas.microsoft.com/wix/2010/BootstrapperApplicationData")]
public class BundleInfo
{
[XmlElement("WixPackageProperties")]
public Collection<PackageInfo> Packages { get; set; } = new Collection<PackageInfo>();
}
public static class BundleInfoLoader
{
private static readonly string bootstrapperApplicationData = "BootstrapperApplicationData.xml";
public static BundleInfo Load()
{
var bundleFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var path = Path.Combine(bundleFolder, bootstrapperApplicationData);
var xmlSerializer = new XmlSerializer(typeof(BundleInfo));
BundleInfo result;
using (var fileStream = new FileStream(path, FileMode.Open))
{
var xmlReader = XmlReader.Create(fileStream);
result = (BundleInfo)xmlSerializer.Deserialize(xmlReader);
}
return result;
}
}
Verwandte Themen
- 1. Android nicht genügend Speicherplatz
- 2. virtualbox volle Scheibe obwohl genügend freier Speicherplatz
- 3. Warum reserviert der Compiler nicht genügend Speicherplatz auf dem Stack?
- 4. aws ec2 - Mongodb EROR: Nicht genügend Speicherplatz für Journaldateien
- 5. Android 5.0 Emulator zeigt Speicherplatz
- 6. Das benutzerdefinierte Android-Dialogfeld zeigt zusätzlichen Speicherplatz an.
- 7. Wie berechnet man freien Speicherplatz?
- 8. Wie erkennen Sie nicht genügend Speicherplatz bei der Verwendung von STDIO-Dateioperationen in C/C++?
- 9. Mongodb gibt "Kann nicht eine Schreibsperre> während nicht genügend Speicherplatz" Fehler mit viel Platz
- 10. Meteor. Wie zeigt man Werte an?
- 11. Wie überwacht man MySQL-Speicherplatz?
- 12. NDepend: Wie zeigt man 'Tier'-Assemblies nicht im Abhängigkeitsgraphen an?
- 13. CALayer zeigt Inhalte nicht an
- 14. Wie zeigt man einen Hyperlink in Inno Setup an?
- 15. Nicht genügend Speicherfehler in Symfony
- 16. Wie zeigt man das Ergebnis in der Textbox an?
- 17. Wie zeigt man Google Font in Safari an?
- 18. Wie zeigt man eine Arraylist in der Listenansicht an?
- 19. Wie zeigt man Daten in lineares HighChart an?
- 20. Wie zeigt man den Menüpunkt in der Aktionsleiste an?
- 21. Wie zeigt man alle Spalten eines Graphen in R an?
- 22. Wie zeigt man einen Openfile-Dialog in Windows an?
- 23. Wie zeigt man ein JButton in einem transparenten JFrame an?
- 24. Wie zeigt man Produktoptionen in der Kategorieansicht an?
- 25. Wie zeigt man Popup-Meldungen in Kakao an?
- 26. Wie zeigt man den Fortschritt in der Tabellenzelle an?
- 27. Wie zeigt man Strings nach dem Zufallsprinzip in uitableViewCell an?
- 28. Wie zeigt man eine veröffentlichte Version in einem Textfeld an?
- 29. Wie zeigt man einen 2-stelligen NumberPicker in Android an?
- 30. Wie zeigt man die Suchadresse in Google Maps an?
hey Kumpel, wo diese XML an ist? Ich finde es nicht in meinem bin/Release-Verzeichnis – mayooran
Die Lade-Methode findet es. Es lädt den XML-Code aus den ausführenden Assemblies. Wenn die Datei .exe ausgeführt wird, wird ein Unterordner in Ihrem temporären Ordner mit einer GUID erstellt. In diesem Ordner erstellt er einen zusätzlichen Ordner mit dem Namen ".ba". In diesem Ordner finden Sie Ihre C# -Bibliothek. die bootstrapper-config, eine Reihe von unterstützenden Dateien und die BootstrapperApplicationData.xml-Datei, die ich in den obigen Code geladen habe. – intinit