AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Manifest-Creator
Thema durchsuchen
Ansicht
Themen-Optionen

Manifest-Creator

Ein Thema von himitsu · begonnen am 2. Sep 2009 · letzter Beitrag vom 26. Dez 2015
Antwort Antwort
Seite 5 von 18   « Erste     345 6715     Letzte »    
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
Moin Leutchen,

hatte mir eben mal schnell 'nen billiges (inzwischen leicht aufgemotztes) Progrämmchen erstellt,
womit man sich 'nen XP-Manifest zusammenklicken könnte.

vielleicht kann's ja wer gebrauchen



Ist jetzt nix Besonderes und ich weiß auch noch nicht, ob auch alles so richtig läuft

Erstellt wird die XML-Resource, welche man in eine *.manifest kopiert/speichert
und dann entweder so mit seinem Programm mitliefert oder direkt in die Resourcen einbindet.
Wie man es halt so kennt.

Zusätzlich wird noch ein Resourcen-Script erstellt, welches die Resource direkt enthält und nicht erst von einer externen Datei einbindet.
  • Standardmäßig ist eine Englisch-Deutsche-Sprachdatei direkt integriert
  • wird eine externe Sprachdatei "ManifestCreatorLang.xml" im Projektverzeichnis gefunden, so wird diese stattdessen beim Programmstart geladen
  • es kann sich also jeder die angehängte ManifestCreatorLang.xml nehmen, um weitere Sprachen erweitern (zum Format in die ersten Kommentare der ManifestCreatorU.pas reinschauen oder einfach mal nach >>"eng"<< suchen, dieses direkt übersetzen
    und dann natürlich hier im Thread hochladen )
  • es werden keinerlei Informationen gespeichert (weder in der Registry, noch in irgendeiner Datei ... abgesehn von den Dateien, welche ihr euch selber manuell speichert, dazu zählen auch die Optionen, welche im Programmverzeichnis gespeichert liegen)
  • und falls wem noch die eine oder andere Section fehlt, dann möge er sich einfach melden
    (nachsehn kann man z.B. hier http://msdn.microsoft.com/en-us/library/aa375632.aspx )
  • die ActiveX-Libraries werden standardmäßig nicht geladen,
    da es sonst etwas langsamer läd (bei mir so 2-5 Sekunden, statt fast sofort)
  • das Laden der ActiveX-Libs läßt sich aber zuschalten
    > einfach als Parameter "-LoadActiveX" mit angeben
  • es läßt sich via Parameter ein Projekt (*.ini) erstellen/laden
    gespeichert muß aber selber werden (sowas wie Autosave beim Beenden gibt's nicht)
    > das Projekt kann via Parameter geladen werden "-IniFile=..."
  • dieses Programm läßt sich als Tool in die IDE integrieren
    Code:
    Titel:     Manifest-Creator
    Programm:  [color=gray]C:\ ... \[/color]ManifestCreator.exe
    Parameter: -IniFile=$PROJECT -CreateIni
    oder
    Code:
    ...
    Parameter: -IniFile=$PROJECT -CreateIni -LoadActiveX
    bis Delphi 2007 so
    Code:
    Parameter: -IniFile== $PROJECT -CreateIni
    und bis Delphi 7 so
    Code:
    ...
    Parameter: -IniFile== $EXENAME -CreateIni
  • in die Resourcedatei (.rc) können nun auch ein Programmicon und Versionsinformationen integriert werden
  • in dem Suchfeld kann man Einträge über ihren Namen suchen und es werden Teilweise auch untegeordnete Infos berücksichtigt, z.B. die CLSIDs und der DLL-Name im Bereich ActiveX
  • die ComboBox mit dem * dahinter, ändert nix an dem Manifest, sondern zeigt nur rechts im InfoMemo passende Texte an, also in diesem Fall was mit der Anwendung unter verschiedenen Rechten passiert.




[initial] v1.2 2009-09-02
[update] v1.3 2009-10-24 19:05
...
[update] v1.4b 2009-12-18 22:45 - Fehler in Sprachdatei
[update] v1.4d 2010-05-25 18:30 - siehe Beitrag #59 (Vieles)
[update] v1.4f 2010-05-29 14:00 - siehe Beitrag #60-#72 (neue IDE-Integration)
[update] v1.4g 2010-05-31 22:00 - siehe Beitrag #74 (kleinere Fehler und neue Parameterbehandlung)
[update] v1.4g2 2010-06-01 09:00 - siehe Beitrag #75 (kleiner Fehler in Sprachverwaltung)
[update] v1.4h 2010-06-01 12:00 - siehe Beitrag #78 (Probleme mit der Projektverwaltung)
[update] v1.5 2010-06-03 00:30 - siehe Beitrag #80 (gewaltige Aufräumaktion)
[info] v1.5a 2010-08-04 08:06 - Neues Forum (URLs der Delphi-PRAXiS haben sich geändert)
[info] v1.5a 2010-08-27 12:45 - Anhänge neu hochgeladen (das Forenupdate hatte die Dateinamen geschrottet) und dabei gleich das UPX weggelassen (man darf nun eh keine EXE mehr hochladen )
[upload] beim Update gehen die Counter verloren > alt = 303x exe, 30x xml und 48x Sources (Memo an mich selbst, da ich garnicht neugierig bin)
[update] v1.5b 2010-08-27 15:33 - CMDs überarbeitet (UPX deaktiviert)
[update] v1.5c 2013-10-03 21:16 - siehe Beitrag #111 - Horst0815 (Support: XE-XE4 & Win8 / Archtektur: amd64)
[update] v1.5d 2013-11-09 20:38 - siehe Beitrag #109 & #112 - blablab & nru (Bugfix: $RESOURCE / Support: Win8.1)
[update] v1.6 2013-11-10 23:23 - siehe Beitrag #122 (Support: XE5 / Codeformatierung und einige Komponentennamen überarbeitet / Funktionen soriert (Regionen) / große Funktionen aufgeteilt / XML als Resource eingebunden)
[update] v1.6a 2013-11-11 01:44 - assemblyIdentity:language berichtigt und kleiner Bugfiges
[update] v1.6b 2013-11-11 23:43 - siehe Beitrag #125 (Bugfix: Ressource-Typ / weitere Komponenten benannt / Windows Server-Namen aufgenommen / Systemsprache laden )
[upload] beim Update gehen die Counter verloren > alt = 557x exe, 248x xml und 279x Sources (860x 278x 327x)
[update] v1.x 2013-12-15 - Sprachbehandlung überarbeitet / angefangen alle Komponenten zu übersetzen / neue XML-Behandlung angefangen (siehe __TestButton)
[update] v2.0 2015-02-08 23:23 - siehe Beitrag #137 (XE6-XE8 / Windows 10 / IdentityType win32 / alle Komponenten fertig übersetzt
[update] v2.0a 2015-02-13 04:05 - siehe Beitrag #140 (DPI-Aware / Hilfe-URLs / Sprachenladefunktion überarbeitet / Suche für fehlende Hilfetexte )
[upload] beim Update gehen die Counter verloren > alt = 176x exe, 84x xml und 104x Sources (1036x 362x 431x)
[update] v2.0b 2015-02-14 12:38 - siehe Beitrag #147 (Bugfix: DPI-Aware / Bugfix: File-Version / Übersetzungen)


Online: http://svn.geheimniswelten.de:8080/!/#ManifestCreator
Checkout: http://svn.geheimniswelten.de:8080/s...reator/Develop
Login, falls nötig: Gast (gast)

Es wird nur die EXE benötigt.
Die Sprach-XML kann man nutzen, um die Übersetzng oder bestimmte Optionen zu erweitern. (z.B. neue Sprache oder OperatingSystemIDs)
Und wofür der Quelltext (inkl. XML) ist, sollte wohl klar sein.
Miniaturansicht angehängter Grafiken
screeny_201.png  
Angehängte Dateien
Dateityp: 7z ManifestCreator.exe.7z (702,1 KB, 398x aufgerufen)
Dateityp: xml ManifestCreatorLang.xml (69,0 KB, 158x aufgerufen)
Dateityp: 7z ManifestCreator.source.7z (213,7 KB, 167x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Mär 2015 um 10:53 Uhr)
 
WebUpdate System
 
#41
  Alt 5. Sep 2009, 10:31
Hallo Himitsu,

wenn man eine .Ini erneut läd, kommt es zu einer Exception, "List index out of bounds (xxx)"

Delphi-Quellcode:
Procedure TForm1.Button2Click(Sender: TObject);
    Var F: TIniFile;
      i, i2: Integer;
      C: TWinControl;

    Begin
      OpenDialog1.DefaultExt := 'ini';
      OpenDialog1.FileName := Edit3.Text;
      OpenDialog1.Filter := SIniFile;
      OpenDialog1.FilterIndex := 1;
      If not Assigned(Sender) or OpenDialog1.Execute Then Begin
        F := TIniFile.Create(OpenDialog1.FileName);
        Try
          For i := 0 to ComponentCount - 1 do Begin
            C := TwinControl(Components[i]);
            If (GetShortHint(C.Hint) <> '') and (Copy(GetShortHint(C.Hint), 1, 1) <> '*') Then
              If C is TCustomComboBox Then Begin
                If TComboBox(C).Style = csDropDownList Then
                  TComboBox(C).ItemIndex := F.ReadInteger('ManifestCreator', GetShortHint(C.Hint), 0)
                Else TComboBox(C).Text := F.ReadString('ManifestCreator', GetShortHint(C.Hint), '');
              End Else If C is TCheckListBox Then Begin
                For i2 := 0 to TCheckListBox(C).Items.Count - 1 do
                  TCheckListBox(C).Checked[i2] := F.ReadBool('ManifestCreator', //<<< HIER kommt der ERROR
                    GetShortHint(C.Hint) + '_' + TCheckListBox(C).Items[i], False);
              End Else If C is TCustomCheckBox Then
                TCheckBox(C).Checked := F.ReadBool('ManifestCreator', GetShortHint(C.Hint), False)
              Else If C is TCustomEdit Then
                TEdit(C).Text := F.ReadString('ManifestCreator', GetShortHint(C.Hint), '');
          End;
        Finally
          F.Free;
        End;
      End;
    End;
Kannst Du dir das mal ansehen?
  Mit Zitat antworten Zitat
Hawkeye219

 
Delphi 2010 Professional
 
#42
  Alt 5. Sep 2009, 10:48
Hallo,

es ist nur eine Vermutung:

Delphi-Quellcode:
[...]
End Else If C is TCheckListBox Then Begin
  For i2 := 0 to TCheckListBox(C).Items.Count - 1 do
    TCheckListBox(C).Checked[i2] := F.ReadBool('ManifestCreator',
      GetShortHint(C.Hint) + '_' + TCheckListBox(C).Items[i], False); // <- sollte hier nicht "i2" stehen?
End Else If C is TCustomCheckBox Then
[...]
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#43
  Alt 5. Sep 2009, 11:28
Zitat von Hawkeye219:
// <- sollte hier nicht "i2" stehen?
sollte es
(das Gleiche beim Speichern)

sowas passiert, wenn man was umbaut und dann nicht komplett testet ._.

[Update im Post #1]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#44
  Alt 27. Okt 2009, 18:09
Es gab jetzt eigenentlich nur zwei winzigkleine Änderungen.

Man kann sich nun auch ein Resource-Compile-Script mit erstellen/speichern lassen,
welches dann aus der .RC eine .RES macht.
(siehe Edit und Memo unten rechts im Bild)

Und nach dem Speichern von Dateien wird der neue Name/Pfad auch in die zugehörigen Edits eingetragen.
(hatte ich irgendwie vergessen)

[Update im Post #1]
  Mit Zitat antworten Zitat
taveuni

 
Delphi 11 Alexandria
 
#45
  Alt 20. Mai 2010, 12:18
Hallo,

Dieser Thread liegt zwar schon eine Weile brach - aber trotzdem:

Bevor ich dupliziere: Hat schon jemand (himitsu?) die Dateiversion
in den Manifest-Creator integriert? Falls nein - darf ich überhaupt die Sourcen
verwenden?
Oder gibt es mittlerweile andere Möglichkeiten einfach ein Win7 Manifest
inkl. Dateiversion und Anwendungsicon zu erzeugen (Auch kommerziell)?

Wenn man viele kleine Applikationen erstellt ist das schon sehr mühsam.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#46
  Alt 20. Mai 2010, 16:46
Zitat:
Dateiversion und Anwendungsicon zu erzeugen (Auch kommerziell)?
Die Dateiversion und das App.-Icon machst du über die IDE (im Falle der Verwendung der VCL).
Man könne diese auch über eine RC-Datei machen, aber die IDE wird dann ggf. rumzicken...
Matti
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#47
  Alt 20. Mai 2010, 17:25
Zitat von turboPASCAL:
Man könne diese auch über eine RC-Datei machen, aber die IDE wird dann ggf. rumzicken...
Also möglich wäre dieses ... das Icon würde sogar direkt in die RC reinpassen (nicht nur als includete Icon-Datei),

aber wie schon erwähnt dürfen diese Informationen dann nicht über Delphi in der Projekt-Resource-Datei (*.res) enthalten sein, da sich dann der Linker über doppelte Resourcen beschwert.

(PS: Die Dateiversion ist, als Beispielcode schon enthalten ... Dateiversion > Einschalten > und dann rechts die .RC manuell rauskopieren und bearbeiten)

Aber klar ... gib mir ein bissl Zeit ... möglich ist Vieles
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#48
  Alt 23. Mai 2010, 18:11
Zitat von turboPASCAL:
Die Dateiversion und das App.-Icon machst du über die IDE (im Falle der Verwendung der VCL).
Man könne diese auch über eine RC-Datei machen, aber die IDE wird dann ggf. rumzicken...
Nunja, ein Manifest kann man ja auch über die IDE einstellen
und seit ein paar Delphiversionen wird dieses ebenso in der Projekt-Resource {$R *.res} abgelegt, so wie die delphiinternen Versionsinfos.

Wenn schon das Manifest von extern kommt, dann ist es auch gut möglich (vielleicht schön für NonVCL), Alles über die hier generierte RC/RES einzubinden?


So, hier dann schonmal eine Vorschau:
- die Versionsinfos können eingestellt werden (allerdings sind diese natürlich nur in der RC enthalten)
- man kann diese sogar mehrsprachig auslegen (Windows bietet dafür theoretisch zwar eine fast unbegrenzte Anzahl, aber ich hab mich mal mit 2 wählbare Sprachen zufriedengegeben ... das sollte wohl erstmal ausreichen)
- das Icon kommt auch bald

und nun noch was zum Rest
- die Sprachverwaltung wurde geändert
- es sind aktuell Englisch und Deutsch direkt integriert und können zur Laufzeit umgestellt werden
- die Optionsdatei liegt aktuell noch im Programmverzeichnis, falls man diese speichert
- diese beiden Sprachen sind direkt integriert, aber wenn man die zusätzliche Sprach-XML ebenfalls in das Programmverzeichnis legt, dann wird stattdessen diese geladen
(ein Neukompilieren für eine Spracherweiterung oder andere Änderungen ist also nicht mehr nötig)

- die Parameter-Verwaltung wurde ebenfalls verändert und erweitert, so ist jetzt keine feste Reihenfolge mehr nötig
- dadurch bekommt man mehr Möglichkeiten, für eine weniger strikte Fernsteuerung
  • LoadActiveX=yes läd sofort beim Start die ActiveX-Liste
  • IniFile=xyz.ini läd eine bestimmte Einstellung
  • Manifest=xyz.manifest stellt eine bestimmte Ausgabedatei ein (oder den Editinhalt)
  • Resource=xyz.rc das Gleiche für das Resource-Script
  • Recreate=yes speichert/erstellt die eingestellten Manifest- und/oder RC-Datei
    und beendet das Programm gleich wieder, wenn der Speicherforgang erfolgreich war

  • längere Parameter (z.B. mit Leerzeichen) sind natürlich auch möglich
    z.B.: IniFile=xyz.ini IniFile="xyz.ini" oder "IniFile=xyz.ini"



Es fehlt also jetzt noch das Icon
und dann wollte ich mich nochmal umsehn, ob es bezüglich des Manifests neu Dinge gibt, welche mit reinkommen sollten.

[edit]
Anhänge/Testversionen gelöscht ... neue Version in Post #1
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#49
  Alt 24. Mai 2010, 19:12
Die beiden Dateien im vorherigen Post #48 wurden nochmals geupdatet.

Falls dort keine Fehler/Probleme entdeckt werden, dann würde ich diese in den nächsten Tagen im Post #1 als aktuelle Version einführen.

  • Icon ist nun enthalten
  • In den ganzen Output-Dateiteien werden jetzt die Kodierungen richtig angewendet
    (vorallem das UTF-8 wurde glatte vergessen )
    * UTF-8 für's .manifest
    * Ansi für die .rc
    * entpsrechend den jeweiligen Codepages für die Versionsinfos innerhalb der .rc
    * und OEM für die .cmd
  • die gepsicherten Einstellungen (.ini) wurden auch nochmals überarbeitet, denn da gab es Probleme mit mehrzeiligen Memos
  • Ein Problem in der Manifest-Erstellung, welcher fehlerhaftes XML erzeugt, wurde ebenfalls behoben.
    (aber zum Glück hat wohl keiner die Sprache oder den Public Key Token im AssemblyIdentity verwendet, so daß es anscheinend niemandem auffiehl)
  • ansonsten wurde vorwiegend noch an den Innereien gearbeitet
    ( ein bissl hier und da optimiert, da was anders gemacht, dort auch noch Irgendwas usw. )

Weitere Features der Manifeste sind noch nicht integriert wurden.
Hatte anscheinend nur noch so spezielle Dinge gefunden und davon nicht zu Wenige.
Alles zu integrieren wäre zu viel Aufwand, also wenn jemand etwas Bestimmtes benötigt (nachzusehn z.B. ab hier http://msdn.microsoft.com/en-us/library/aa375632.aspx ), dann kann er/sie sich ja gerne melden und ich versuche es dann einzubauen.
  Mit Zitat antworten Zitat
taveuni

 
Delphi 11 Alexandria
 
#50
  Alt 25. Mai 2010, 08:23
Hallo himitsu,

Vielen Dank,
Das nähert sich der optimalen Lösung!
So müssen nämlich nicht Informationen an 2 verschiedenen Orten gepflegt werden.
(win7 manifest, Anwendungsicon und Dateiinformationen).

2 Kleinigkeiten sind mir aufgefallen.
Ab dem Zeitpunkt wenn ein Icon geladen wird reagiert dein Programm sehr träge.
(Keine Rückmeldung für ca. 10-15 Sekunden).
Insbesondere das laden selbst, danach ein Klick auf einen anderen Node im Treeview.
Ebenfalls das speichern und laden der Ini (wobei dies verschmerzbar ist).
Ist das nur bei mir so?

Dann das speichern der *.rc Datei: Es wird ein Name verlangt beim Speichern.
In der *.cmd Datei wird dann aber immer Manifest.rc gesucht. Das war früher anders?

Ansonsten: Tolle Arbeit

Danke

Gruss Werner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 18   « Erste     345 6715     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
Manifest ? BytecoreWiki This thread Refback 4. Aug 2010 18:08

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz