Beheben Sie den ProgressDlg, damit er ordnungsgemäß angezeigt wird.
Ich habe die Schriftgröße meines Installationsprogramms von 8 auf 10 erhöht, um die Schrift auf hochauflösenden Monitoren in einem menschlicheren, nutzbaren Maßstab darzustellen. Ich mache das mit diesem XML-Zauber:
Doch dadurch wird der ProgressDlg nicht mehr ordnungsgemäß angezeigt. Dies ist der Dialog, der den Installationsfortschritt ganz am Ende anzeigt. Der ActionText wird abgeschnitten, sodass Unterlängen von Buchstaben wie g und j nicht dargestellt werden. Beheben Sie dies, indem Sie die Größe und Position der verschiedenen Steuerelemente im Progressdialog in einem Nachbearbeitungs-Javascript anpassen. Führen Sie dieses Skript nach der Erstellung der MSI aus:
var msiOpenDatabaseModeTransact = 1;
var filespec = WScript.Arguments(0);
var installer = new ActiveXObject("WindowsInstaller.Installer");
var database = installer.OpenDatabase(filespec, msiOpenDatabaseModeTransact);
// Der Text auf dem Exit-Dialog ist zu nah am Titel. Dieser
// Schritt verschiebt den Text von Y=70 auf Y=90, etwa eine Zeile.
sql = "UPDATE `Control` SET `Control`.`Y` = '90' " +
"WHERE `Control`.`Dialog_`='ExitDialog' AND `Control`.`Control`='Description'";
view = database.OpenView(sql);
view.Execute();
view.Close();
// Die Fortschrittsleiste ist zu nah am Status-Text auf dem Fortschrittsdialog.
// Dieser Schritt verschiebt die Fortschrittsleiste von Y=115 auf Y=118, etwa 1/3 Zeile.
sql = "UPDATE `Control` SET `Control`.`Y` = '118' " +
"WHERE `Control`.`Dialog_`='ProgressDlg' AND `Control`.`Control`='ProgressBar'";
view = database.OpenView(sql);
view.Execute();
view.Close();
// Die StatusLabel- und ActionText-Steuerelemente sind zu kurz im Fortschrittsdialog,
// sodass der untere Teil des Textes abgeschnitten wird. Dieser Schritt
// erhöht die Höhe von 10 auf 16.
sql = "UPDATE `Control` SET `Control`.`Height` = '16' " +
"WHERE `Control`.`Dialog_`='ProgressDlg' AND `Control`.`Control`='StatusLabel'";
view = database.OpenView(sql);
view.Execute();
view.Close();
sql = "UPDATE `Control` SET `Control`.`Height` = '16' " +
"WHERE `Control`.`Dialog_`='ProgressDlg' AND `Control`.`Control`='ActionText'";
view = database.OpenView(sql);
view.Execute();
view.Close();
database.Commit();
0 Stimmen
Blicken Sie sich gui4wix.codeplex.com an
10 Stimmen
Als nicht konstruktiv geschlossen? Ich habe eine Menge gelernt, indem ich diese Frage gestellt habe! Ein wenig Konsistenz von StackOverflow wäre auch schön...z.B. stackoverflow.com/questions/550632/…
15 Stimmen
Es bekam '203' Likes, das reicht aus, um seine Nützlichkeit zu beweisen.
0 Stimmen
SO-Fragen müssen eine definitive, korrekte Antwort haben; offene Fragen führen dazu, dass die Fragen, die die Leute zu tatsächlichen Problemen stellen, von der Startseite abrutschen. FAQ @Si.: Diese Richtlinie war meines Wissens schon immer da, aber sie wird jetzt besser durchgesetzt; diese Frage ist fast drei Jahre alt.
0 Stimmen
Fair genug, Jim, es handelt sich um eine offene Frage, und ich denke, es liegt an der SO-Community zu entscheiden, aber ich muss sagen, dass es eigenartig erscheint, sie als nicht konstruktiv zu schließen, da ich persönlich und anscheinend auch viele andere Personen diese Frage nützlich gefunden haben (z. B. goo.gl/Zqp2X), und dass sie sehr gut zum Teil des FAQs passt, der sich mit
praktischen, beantwortbaren Fragen basierend auf tatsächlichen Problemen, mit denen Sie konfrontiert sind
befasst.0 Stimmen
Es ist nützlich (warum ich hier bin), aber es handelt sich nicht um ein Frage-und-Antwort-Spiel, sondern um eine Diskussion. Die Frage selbst scheint eine legitime Frage zu sein und die aktuell am meisten hochgevotete Antwort scheint eine legitime Antwort zu sein, aber der Rest der Antworten fügen nur ihren Senf hinzu, was es zu einer Diskussion macht.