Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Manifest-Creator (https://www.delphipraxis.net/139658-manifest-creator.html)

WebUpdate System 5. Sep 2009 10:31

Re: Manifest-Creator
 
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?

Hawkeye219 5. Sep 2009 10:48

Re: Manifest-Creator
 
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

himitsu 5. Sep 2009 11:28

Re: Manifest-Creator
 
Zitat:

Zitat von Hawkeye219
// <- sollte hier nicht "i2" stehen?

sollte es :freak:
(das Gleiche beim Speichern)

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

[Update im Post #1]

himitsu 27. Okt 2009 18:09

Re: Manifest-Creator
 
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]

taveuni 20. Mai 2010 12:18

Re: Manifest-Creator
 
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

turboPASCAL 20. Mai 2010 16:46

Re: Manifest-Creator
 
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...

himitsu 20. Mai 2010 17:25

Re: Manifest-Creator
 
Zitat:

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 :angel:

himitsu 23. Mai 2010 18:11

Re: Manifest-Creator
 
Zitat:

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? :gruebel:


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

himitsu 24. Mai 2010 19:12

Re: Manifest-Creator
 
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 :oops: )
    * 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.

taveuni 25. Mai 2010 08:23

Re: Manifest-Creator
 
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

himitsu 25. Mai 2010 09:46

Re: Manifest-Creator
 
Zitat:

Zitat von taveuni
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?

Also bei mir merke ich keinerlei Verzögerung, gegenüber der vorhergehenden Version.

Obwohl zwar das Icon intern als Text verwerwaltet wird, sollte es recht schnell geehn.
- beim Speichern/Erstellen der RC wird direkt der Text eingefügt.
- und ansonsten wird nur beim Einfügen des Icons und beim Laden der INI eine String<>Icon-Umwandlung vorgenommen (das Icon wird ja in viele Integer zerlegt, bzw. daraus zusammengesetzt)
- beim Umschalten der TreeNodes sollte dieses aber keinerlei Auswirkungen zeigen, da dort absolut nix mit dem Icon in Berührung kommt. :gruebel:

Mit welchem System arbeitest du denn? (welches Windows, wieviel RAM, CPU, ...)

Leider läßt sich der aktuelle Code nicht mehr direkt mit Delphi 2007 debuggen/kompilieren, sonst hättest du eventuell mal versuchen können selber nachzusehn, wo es hängt. :?



Zitat:

Zitat von taveuni
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?

Ups, da hat die geänderte Fehlerbehandlung böse zugeschlagen. :shock:

Beim Zuweisen des Dateinamens, z.B. an Edit5.Text, werden über das OnChange die Dateien (mit den neuen Dateinamen) neu erstellt.
Nun hatte ich jetzt diese Zuweisung ans Ende verschoben, damit bei einem Fehler der alte Namen erhalten bleibt.
(z.B. Exception durch fehlende Schreibrechte beim Speichern)

Heißt also, nun wurde erst gespeichert und dann erst der Name geändert. :oops:

Die Kurzfassung:
Delphi-Quellcode:
// alt
If SaveDialog1.Execute Then Begin
  Edit5.Text := SaveDialog1.Filename;
  Memo1.Lines.SaveToFile(Edit5.Text);
End;

// neuer (das mit dem Fehler)
If SaveDialog1.Execute Then Begin
  Memo1.Lines.SaveToFile(SaveDialog1.Filename);
  Edit5.Text := SaveDialog1.Filename;
End;

// jetzt sieht es etwa so aus :)
If SaveDialog1.Execute Then Begin
  N := Edit5.Text;
  Try
    Edit5.Text := SaveDialog1.Filename;
    Memo1.Lines.SaveToFile(Edit5.Text);
  Except
    Edit5.Text := N;
    Raise;
  End;
End;
[add]
Ach ja, dem TreeView wurde vorhin noch ein Kontextmenü verpaßt:
- alles ausklappen
- alles zusammenklappen
- Eintag auswählen (das Selbe, wie bei einem Doppelklick oder beim Benutzen der [Enter]-Taste)

[info] aktuelle Dateien wieder in Beitrag #48

taveuni 25. Mai 2010 10:15

Re: Manifest-Creator
 
Hallo himitsu,

Also: Ich hab mal genauer getestet.
Ohne Icon ist alles normal. Das Laden eines Icons dauert bei mir ca. 30 Sekunden.
In dieser Zeit ist die Applikation nicht bedienbar.
Wenn diese zurückkommt und ich den ersten Wechsel im Treeview mache dauerts wieder 30 Sekunden.
Danach kann ich navigieren ohne Probleme.
Bis zum Zeitpunkt wenn ich entweder das Ini speichere oder lade.
(Dann geht auch das wieder los mit dem Tree).

Korrektur: Es kommt auch zwischendrin vor. Aber nur mit geladenem Icon.

Edit2:
Ganz genau kommt das Problem wieder wenn in der Ansicht "Laden/Speichern" einen
Namen ins unterste Editfeld zum speichern der rc Datei schreiben will. Ein Klick da rein
blockiert wieder 30 Sekunden die Applikation.

Mein Rechner:

- Intel Xeon X3450 Quadcore
- 8 GB RAM
- Windows 7 Professional 64 Bit.

Wenn ich Zeit hab werf ich mal den Debugger an.

Edit: Habe erst jetzt gelesen dass ich mit meiner veralteten IDE gar nicht kompilieren kann.

himitsu 25. Mai 2010 10:47

Re: Manifest-Creator
 
Hmmm, eigentlich ist das alles ja mehr/besser, als hier in meinem Rechner. :gruebel:

Könntest du das Icon oder 'ne ganze Projektdatei (INI) mal anhängen?

Im Anhang das Ganze in D2009 kompiliert (das sind auch gleich mal 400 KB weniger in der EXE)

Zitat:

Zitat von taveuni
Edit: Habe erst jetzt gelesen dass ich mit meiner veralteten IDE gar nicht kompilieren kann.

Wenn man so sachen, wie TEncoding rausnimmt, dann sollte es auch mindestens mit D2006 oder gar D7 kompilierbar sein. (die Vorgängerversion war ja ein Delphi 7-Projekt)

Allerdings werden aktuell für Mehrsprachigkeit der Ausgabedateien Funkionalitäten von D2009+ genutzt.
(so brauchte ich nichts selber implementieren und konnte mir etwas Arbeit ersparen :angel2: )

[edit]
Anhänge/Testversionen gelöscht ... neue Version in Post #1

ChrisE 25. Mai 2010 12:47

Re: Manifest-Creator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

zur Ladeproblematik von ICONs.

System:
Vista 32Bit SP2
Phenom II X4 940 (@3 GHz)
4 GB Arbeitsspeicher (3,2 Effektiv)

Version aus #53 verwendet.

Zu Testzwecken ein nicht von mir erstellte ICO-Datei verwendet.
Laden ca. 4-5 Sekunden (Anwendung friert ein)
Löschen ca. 7-8 Sekunden (Anwendung friert ein)

Kein Unterschied ob das interne Manifest abgeschaltet wird oder nicht. Alternativen Datenstrom wegen Download mit Vistaboardmitteln entfernt - trotzdem kein Unterschied.

Vielleicht hilft es ja.

Greez, Chris

Edit:
  • Das erste umschalten dauert bei mir auch 4-5 Sekunden (also gleich lange wie beim Laden) wie es in #52 beschrieben wird von taveuni.
  • Sämtliche Änderungen bei geladenem ICO die sich "live" aus das Manifest oder / und die RC auswirken erzeugen die selbe Wartezeit (z.B. Beschreibung anpassen nach laden von ICO. Jeder Buchstabe erzeugt ca. 4 Sekunden Wartezeit).

himitsu 25. Mai 2010 14:05

Re: Manifest-Creator
 
Im Beitrag #48 (Download) hab ich grad eine neue Version hochgeladen (die einzelne EXE).

Erstmal waren die Daten und damit die Zeit 4-mal so lang, wie nötig.
Beim Zerlegen des Icons wurde falsch gezählt :oops: ( Dec(i) statt Dec(i, 4) ), daher wurde der Datenstrom länger.

So, das Zerlegen dauert zwar auch noch etwas, aber im Verhältnis zu den laaaangen Zeiten ist es noch recht flott, darum wurde da nicht viel geändert, aber das Zusammensetzen des Icons wird jetzt anders behandelt (sehr viel weniger Stringoperationen) ... es sollte nun also schneller sein.

Upload inkl. Source kommt demnächst, wollte erstmal noch was fertigmachen.
'nen Info-Tab (mit Version und Co.) wird grade eingefügt.

Falls jemand hierfür ein schönes Programm-Icon kennt ... bin auf der Suche nach sowas.

ChrisE 25. Mai 2010 14:20

Re: Manifest-Creator
 
Hallo himitsu,

die Ladezeiten etc. sind bei mir jetzt nicht mehr da :thumb:

Hab nur auf einmal einen "leeren" Eintrag zwischen "Optionen" und "-> Zeige alles" in der Auswahl links oben.

Sonst wieder mal super :-D

Greez, Chris

taveuni 25. Mai 2010 14:26

Re: Manifest-Creator
 
Auch bei mir läuft's nun flott.
Super danke.

Icon: Such Dir eins aus: http://www.iconarchive.com/

himitsu 25. Mai 2010 14:43

Re: Manifest-Creator
 
@ChrisE: Der leere Eintrag kommt nur von dem neuen Tab für Infos (Versionsnummer und Co.), für welchen es natürlich noch keine Übersetzungen gibt ... vielleicht sollte ich mal die zugehörige Fehlermeldung reaktivieren. :stupid:

@iconarchive
Joar, einige dieser Webseiten hab ich schon in der Mangel, aber jetzt finde mal das eine zum Programm passende Icon, unter diesen Massen an Icons. :zwinker:
(aktuell hab ich mir erstmal ein grünes Shield besorgt, aber vielleicht gibt es ja was passenderes, abgesen von dem einem wunderschönen Icon-Packet, über welches ich vorhin gestolpert bin und was gleich mal 200 UD$ billig ist)

himitsu 25. Mai 2010 18:10

Re: Manifest-Creator
 
So, ich hoffe es ist jetzt alles OK
und hier nochmal die letzen Änderungen und einige wichtige Infos im Überblick:
  • die Versionsinfos können eingestellt werden (allerdings sind diese natürlich nur in der RC enthalten)
  • man kann diese sogar mehrsprachig auslegen
  • es kann ein Programm-Icon in die RC eingebunden werden
  • die Sprachverwaltung wurde komplett überarbeitet
  • es sind Englisch und Deutsch integriert, aber wenn jemand weitere Sprachen hinzufügen will, so kann er/sie die ManifestCreatorLang.xml ins Programmverzeichnis legen und dieser weitere Übersetzungen hinzufügen
  • die Parameter-Verwaltung wurde ebenfalls verändert und erweitert
    (genauere Informationen im Abschnitt "Info" der EXE)

    Die RAD-Integration muß dementsprechend geändert werden, wenn man diese benutzt:
    Code:
    Titel:     Manifest-Creator
    Programm:  [color=gray]C:\ ... \[/color]ManifestCreator.exe
    Parameter: IniFile=$PROJECT CreateIni=yes
    oder
    Code:
    ...
    Parameter: IniFile=$PROJECT CreateIni=yes LoadActiveX
  • die Kodierungen der Exporte (.manifest .rc .cmd) werden jetzt richtig/besser behandelt
  • und einige Fehler/Probleme im Programm wurden behoben

Anhänge siehe Post #1

himitsu 27. Mai 2010 17:45

Re: Manifest-Creator
 
Ich hab mal versucht die Verwaltung der IDE-Integration mit zu integrieren. :stupid:

Unter "Option" sollten (hoffentlich) die installierten Delphis/BDSs/RADs (D5 bis 2010) aufgeführt sein
und wenn man dort dann ein Häckchen macht und speichert (Delphi sollte dabei möglichst nicht laufen)
müßte der Eintrag in Tools im Delphi erscheinen, mit welchem man nun den Manifest-Creator direkt von der IDE aus aufrufen kann. (er wird mit dem aktiven Projekt verbunden)


Falls das läuft, würde ich noch ein/zwei was beim Speichern verbessern und eventuell noch die RC gleich mit zur RES compilieren lassen.

wine 27. Mai 2010 18:21

Re: Manifest-Creator
 
Zitat:

Zitat von himitsu
...

Falls jemand hierfür ein schönes Programm-Icon kennt ... bin auf der Suche nach sowas.

Zum Manifest-Creator-Icon fällt mir ein/habe ich nachgeschlagen:

http://www.albertmartin.de/latein/?q=Manifest&con=0

http://de.wikipedia.org/wiki/Kommunistisches_Manifest

Da Dein Programm (habe es noch nicht ausprobiert) Open-Source ist, fände ich eine rote Faust ganz passend :zwinker:

:love:
wine

taveuni 28. Mai 2010 06:40

Re: Manifest-Creator
 
Hallo Himitsu,

Zitat:

Zitat von himitsu
Ich hab mal versucht die Verwaltung der IDE-Integration mit zu integrieren. :stupid:

Grossartig! Wo ist denn die Version?

Zitat:

Zitat von himitsu
Falls das läuft, würde ich noch ein/zwei was beim Speichern verbessern und eventuell noch die RC gleich mit zur RES compilieren lassen.

Das wäre mein nächster Wunsch Vorschlag Bitte gewesen!

himitsu 28. Mai 2010 07:04

Re: Manifest-Creator
 
Zitat:

Zitat von taveuni
Wo ist denn die Version?

diesmal gleich im Post #1 eingefügt :oops:

Aber, wie gesagt, ich weiß nich, ob auch alle Registry-Pfade richtig sind und ob demnach auch alle Delphi-Version richtig erkannt/behandelt werden.

taveuni 28. Mai 2010 08:54

Re: Manifest-Creator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich brauch noch eine kleine Bedienungsanleitung :oops:

Das integrieren in meine IDE (2007) hat geklappt.
Der ManifestCreator ist unter Tools aufgeführt.

Wenn ich nun ein Projekt lade und dann Tools/ManifestCreator kommt die Meldung
"Datei "$PROJECT.manifest.ini" existiert nicht.

Ich setze dann meine Optionen und speichere die Ini mit dem Namen: "Projektname.manifest.ini".
Lade ich mein Projekt nun wieder und führe Tools/ManifestCreator auf habe ich wieder die Meldung?

Ausserdem: Wie erstelle ich nun automatisch die *res?

Und:
Funktionert (wenn es denn funktioniert) das mit dem erstellen/suchen der Ini Datei auch wenn ich eine
Projektgruppe lade und dann in den jeweiligen Projekten den Creator via IDE lade?

Was in diesem Zusammenhang noch praktisch wäre:
Eine Möglichkeit eine zentrale Konfigurationsdatei für den Creator im Projektverzeichnis über welche
man ein /Common Verzeichnis angeben könnte. Denn bei einer Projektgruppe mit vielen Unterprojekten
wird es schnell unübersichtlich. Aber dies wäre nur die Luxusvariante.

Danke für Deine Top Arbeit.

Edit:
Kann es sein das der ManifestCreator im Projektverzeichnis liegen muss?
Wohl eher nicht oder?

himitsu 28. Mai 2010 09:11

Re: Manifest-Creator
 
Zitat:

"Datei "$PROJECT.manifest.ini" existiert nicht.
Hmmm, eigentlich hatte ich das doch repariert? :shock:


Kannst du mal bitte in der Registry nachschauen was für ein Wert in
HKEY_CURRENT_USER > Software\Borland\BDS\5.0\Manifest-Creator > Params
drinsteht?


Nee, er muß nicht im Projektverzeichnis liegen.
Es läuft wohl nur was bei einer Abfrage schief ... eigentlich sollte über einen Parameter notfalls diese Meldung unterdrückt werden, wenn beim Start die gewünschte Manifest-Projektdatei noch nicht existiert, welche dann in dem Delphi-Projektverzeichnis abgelegt wird.

taveuni 28. Mai 2010 09:46

Re: Manifest-Creator
 
Zitat:

Zitat von himitsu
Kannst du mal bitte in der Registry nachschauen was für ein Wert in
HKEY_CURRENT_USER > Software\Borland\BDS\5.0\Manifest-Creator > Params
drinsteht?

Hmmh..
Bei mir gibt es überhaupt keinen Key mit "Manifest-Creator" in der Registry.
Nur einen Value:
Computer\HKEY_CURRENT_USER\Software\Borland\BDS\5. 0\Transfer\ -> Name=Title3 Typ=REG_SZ Value=Manifest-Creator

himitsu 28. Mai 2010 11:56

Re: Manifest-Creator
 
Ahh OK, dann eben Params3 in HKCU\Software\Borland\BDS\5.0\Transfer ... da fehlte bestimmt der Parameter "CreateIni".

- daß mit den Parameter sollte jetzt stimmen
- die RES kann man sich nun direkt kompilieren lassen
- der bekannte "falscher Dateiname in CMD"-Fehler ist endlich komplett weg (da hatte sich noch ein Teil versteckt)
- beim Beenden und beim neu Laden sollte jetzt eine Abfrage kommen, ob man nicht speichern will, wenn was verändert wurde

Planungen:
- einige der Eingabefelder über Parameter zugänglich machen, damit diese auch von Extern (über Parameter) zugewiesen werden können ... weiterer Schritt in Bezug auf die Fernsteuerbarkeit.



Man braucht also nun nur noch {$INCLUDE *.Manifest.res} in die DPR (oder von mir aus auch in eine PAS) schreiben, geht auf Tool > Manifest-Creator erstellt sein Manifest, beendet und speichert
und schon beim nächsten Compilieren der Anwendung sollte das Manifest eingebunden werden. :-D

taveuni 28. Mai 2010 12:14

Re: Manifest-Creator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmhhh.

Nun sucht er die manifest.ini an einem sehr speziellen Ort.
Wie das denn?

himitsu 28. Mai 2010 12:38

Re: Manifest-Creator
 
Das liegt leider nicht an meinem Programm.
In Delphi 2006 tritt das selbe Problem auf.

Aus irgendeinem Grund ersetzt Delphi das "$PROJECT" im Parameter nicht durch Projektdatei+Pfad. :gruebel:

(gut, in Delphi geht es auch nich, aber dieses kenn $PROJECT noch nicht)


Da werde ich wohl mal gucken müssen, wieso Delphi, bzw. die IDE da nix ersetzt und welche Variable in D7 verwendet werden muß.

taveuni 28. Mai 2010 12:48

Re: Manifest-Creator
 
Zitat:

Zitat von himitsu
Da werde ich wohl mal gucken müssen, wieso Delphi, bzw. die IDE da nix ersetzt und welche Variable in D7 verwendet werden muß.

Hallo himitsu,

Danke. Ich hab aber D2007 nicht D7. Aber vermutlich egal.

himitsu 28. Mai 2010 12:53

Re: Manifest-Creator
 
Zitat:

Zitat von taveuni
Danke. Ich hab aber D2007 nicht D7. Aber vermutlich egal.

Die 2007 hab ich halt nicht, aber ich denke mal, als Vergleich dürfte die 2006 (Turbo Delphi) ausreichen, denn dort sieht der Fehler auch so aus.

Ich mach rade einen anderen Thread dazu auf, denn es liegt eindeutig an Delphi
und vielleicht kennt ja jemand eine Lösung.

himitsu 29. Mai 2010 13:15

Re: Manifest-Creator
 
Wenn die IDE-Integration jetzt nicht läuft, dann weiß ich auch nicht mehr weiter. :?

Zitat:

aber aus gegebenem Anlaß geht ich nun erstmal über eine zweite Anwendung, welche die/den "einen" übergebenen Parameter analysiert, beim Fehlen der " die vielen Parameter wieder zu Einem zusammensetzt, alles um das Parameter-Prefix und den zweiten Parameter erweitert und das dann an meinen MC weiterleitet.
> http://www.delphipraxis.net/internal...156608#1156608

Nicht wuntern, die zweite Anwendung ist direkt in der EXE integriert und wird bei Bedarf ins Programmverzeichnis kopiert.
(witzig nur, daß diese EXE in D4 kompiliert größer ist, als mit D7 :shock: ... ok, danach wird es immerhin wieder größer)

taveuni 31. Mai 2010 06:44

Re: Manifest-Creator
 
Guten Morgen!

Erfreulich was Du übers Wochenende gemacht hast. Ich hab Deine letzte Version getestet.
Funktioniert bei mir perfekt!

Etwas vermutlich nebensächliches:
Im Programmverzeichnis des Creators wird eine .manifest erstellt
(vermutlich die letzte welche bearbeitet wurde?).

Wunsch: Eine Kleinigkeit würde ich mir noch wünschen:
Nämlich die Möglichkeit ein komplettes (Creator-)Projekt als default Template zu erstellen.
Die Abweichung zum Programmdefault könntest Du ja in der ManifestCreator.ini im Programmverzeichnis
speichern? Wenn dann der Creator aus der IDE aufgerufen wird und kein $Project.manifest.ini vorhanden
ist könnten einfach die Parameter aus dem default geladen werden.
Damit würde sich meiner Meinung nach auch erübrigen noch mehr Parameter via Kommandozeile zu integrieren.

Vielen Dank für Deine Arbeit für etwas was eigentlich schon lange in die IDE gehört hätte.

himitsu 31. Mai 2010 21:21

Re: Manifest-Creator
 
  • neue Parameterbehandlung
    wenn dieses noch ein bissl ausgefeilter ist, dann könnte die IDE-Integration vielleicht auch wieder ohne Hilfsprogramm laufen :-D
  • die IDE-Integragion scheint aber wenigstens erstmal zu laufen
  • ActiveX und die unterstützen OS werden nun unmissverständlicher in der Projektdatei gespeichert, so daß es zu weniger Ladeproblemen kommt, wenn sich die entsprechende Liste inzwischen geändert hatte
  • außerdem wird nun die ActiveX-Liste gespeichert, wenn sie von einem zu ladenden Projekt benötigt wird, und somit auch die Einträge richtig geladen werden
  • das Manifest in der Resource wird nicht mehr komprimiert ... Windows mochte es irgendwie nicht, wenn da zuviele Leerzeichen und Zeilenumbrüche fehlten (es meinte dann die Datei sei nicht Standardkonform)
  • man kann ein Standardprojekt abspeichern (siehe Optionen)
  • alternativ kann man via Parameter auch ein anderes Standardprojekt angeben
  • via Parameter lassen sich auch die Versionsinfos unter Idendity/Identität ändern
  • für diese Parameter einfach mal in den [info]-Teil des Programms schauen
  • eine über die IDE-Integration erstelle Projektdatei wird nicht mehr gleich zu Programmstart angelegt/gespeichert (war etwas blöd, wenn man das Programm beendete und "Nee, nicht speichern" sagte)
  • Zitat:

    Im Programmverzeichnis des Creators wird eine .manifest erstellt
    (vermutlich die letzte welche bearbeitet wurde?).
    Hier wurde nur etwas falsch verglichen und je eine "namenlose" Datei angelegt, wenn über den Parameter eine Projektdatei geladen wurde, aber darin kein .manifest oder .rc angegeben war.
  • aktuelle Dateien siehe Post #1
    und hier im Anhang liegt eine Debugversion, welche vor Dateizugriffen (lesen oder speichern) eine Messagebox mit dem Dateinamen anzeigt ... falls dennoch irgendwo verdächtige Dateien auftauchen (im Code siehe DEFINE ShowFileAccess)

[edit]
Anhang entfernt ... neue Version in Beitrag #80

himitsu 1. Jun 2010 08:00

Re: Manifest-Creator
 
Zitat:

Zitat von taveuni
In der neuesten Version ist bei mir "Unterstütztes BS" leer.

Ups, ist mir garnicht aufgefallen
(hatte aber auch garnicht danach geguckt, weil ich doch eigentlich nichts geändert hatte, außer die Lokalisierung für diese Liste abzuschalten :oops: ).

Delphi-Quellcode:
Function TForm1.LangCount(Typ, Name, Lang: String): Integer;
  Var Nodes: IXMLDOMNodeList;

  Begin
    ...
    If Result = 0 Then Result := LangCount(Typ, Name, '*');
  End;
Was eine kleine (mal absichtlich weggelassene) Zeile später für Auswirkungen haben kann. :wall:

Mal sehn, wie ich dieses dennoch besser lösen kann.
Denn falls man nun sprachabhänige und sprachunabhängige Texte hinterlegt, stimmt die Zählung nicht mehr, aber mir fällt ein, daß sie dann vorher auch nicht stimmte ... da hatte ich mir wohl was falsches gedacht ... und nein, Folgendes geht auch nicht.
If Lang <> '*' Then Inc(Result, LangCount(Typ, Name, '*'));

Aber da hier aktuell nix gemischt ist, geht es erstmal so. :roll:

taveuni 1. Jun 2010 08:48

Re: Manifest-Creator
 
Zitat:

Zitat von himitsu
[*] eine über die IDE-Integration erstelle Projektdatei wird nicht mehr gleich zu Programmstart angelegt/gespeichert (war etwas blöd, wenn man das Programm beendete und "Nee, nicht speichern" sagte)

Da versteh ich das Konzept nicht (mehr).
Das automatische anlegen und speichern war sehr praktisch.
So wie es nun aussieht werden die Änderungen welche gemacht werden auf die Speichern? abfrage beim schliessen des Creators
in der Ini welche im Creator Verzeichnis liegt gemacht? Sollte das nicht die default.ini sein?.

Muss ich nun jedes Mal für jedes Projekt den Namen des Mainifests und der *.rc angeben? (Und der Ini?)

:?

Edit:
Hab eben gesehen das der Parameter mit dem IniFile nicht mehr drin ist.
Wie muss ich den die Parameter setzen wenn ich will:
- Wennn keine $Project.manifest.ini vorhanden lade default.manifest.ini und speichere diese als $Project.manifest.ini
- Wenn eine da nimm diese.

himitsu 1. Jun 2010 09:26

Re: Manifest-Creator
 
[edit]
Es hatte sich ein Fehler beim Laden des Defaultprojekts ergeben ... hatte vergessen den Projektnamen danach zu entfernen :oops:
[/edit]

Beim Programmstart wurde "ausversehn" schon eine Projekt-Ini erstell/gespeichert, wenn diese noch nicht existierte.
Das bereitete soweit auch keine Probleme, solange man am Ende das Projekt speicherte.
Wenn man aber am Ende doch nicht speicherte, dann blieb ja dennoch diese Datei zurück (mit Standardeinstellungen).

Also diese Datei(en) werden dennoch angelegt, wenn man beim Programmende speichert (also einfach auf "JA" klickt) und nicht die Änderungen verwirft.

Zitat:

Muss ich nun jedes Mal für jedes Projekt den Namen des Mainifests und der *.rc angeben? (Und der Ini?)
Wenn man von der IDE aus den Creator startet und er noch kein Manifest-Projekt entdeckt, dann wird das Standardmanifest genommen, dazu wird über den Delphi-Projektnamen, durch änderung der Dateierweiterung, ein Manifest-Projektname generiert und standardmäßig erstmal die .RC zur Generierung eingerichtet.
Außerdem ist standardmäßig der Haken bei RES-erstellen gesetzt.
Klickt man am Ende auf "Ja, ich will die Änderungen speichern", dann würde somit die INI, die RC und die RES erstellt.

Zitat:

Hab eben gesehen das der Parameter mit dem IniFile nicht mehr drin ist.
Da es ja einige Probleme seitens der IDE gibt, wird von da nur noch der Projektname rausgerückt und die IDEForward.exe prüft dann diesen Namen, paßt ihn notfalls an und ergänzt den kompletten Parameter so, daß er dann für den Manifest-Creator dann wieder stimmt.

siehe
Zitat:

Nun, in meinem Fall wollte ich aber nicht die Parameterbehandlung im eigenem Programm verändern und hab mir somit ein Hilfsprogramm erstellt, welches den Parameter parst, anpaßt und an die eigentlich Anwendung weitergibt.
http://www.delphipraxis.net/internal...156755#1156755



Zu dem Default-Projekt:

Unter [Optionen] kannst du das aktuelle Projekt als Standardprojekt intern abspeichern.
(man könnte auch irgendwo ein anderes Projekt anlegen, welches man via Parameter als Standardprojekt festlegt, aber dieses geht aktuell nicht über die IDE-Integration)
Wenn nun der Creator gestartet und kein Projekt geladen/gefunden wird, so werden diese Daten geladen.

himitsu 1. Jun 2010 11:08

Re: Manifest-Creator
 
Zitat:

Zitat von taveuni
Vermutlich bin ich zu blöd.

- Ich habe den Creator ersetzt.
- Ich speichere ein Standartprojekt.
- Ich öffne in IDE ein Projekt ohne manifest.ini
Das Standardprojekt wird geladen :)
Aber keines erstellt (weder ini noch rc) :(
- Ich ändere die Parameter und schliesse den Creator
Es kommt keine Abfrage
:(

Tschuldschung.

Nach dem Laden des Projektes setze ich nun den internen "Änderungs"-Speicher zurück,
somit sollte die Abfrage nun erscheinen.

Oh man, es ist garnicht so einfach eine Abfrage zu gestalten, ob sich etwas im Projekt verändert hat.
(hier wird ja nur auf "richtige" Änderungen ragiert ... etwas ändern und rückgängig machen wird da mit beachtet, außerdem kann ich nicht einfach so z.B. auf "OnChange" irgendwelcher Controls reagieren und dementsprechend den Änderungsstatus setzen, da sich diese Ereignisse auch mit ungespeicherten Controls vermischen ... wird alles über's selbe Event behandelt)

Außerdem gab es einen winzigen Fehler in der IDEForward.exe, welcher ein "-" unterschlug.
Die IDE-Integration müßte also neu eingerichtet werden.
(falls es nochmal eine Änderung diesbezüglich gibt, wird die nächste Version des MF eine Warnung ausgeben, wenn die Integration geupdatet werden müßte)


Und wehe jemand finde jetzt noch 'nen Fehler ... dann heul ich :?
So, nun abwaschen (aufgegessen hab'sch schon :stupid: ) und dann zurück zu den RegExen.

taveuni 1. Jun 2010 12:22

Re: Manifest-Creator
 
Juppii - Es läuft :cheers:

Ich hab auf Anhieb keinen Fehler mehr gefunden und kann himitsu's Manifest-Creator nun
uneingeschränkt empfehlen. Mit diesem ist es nun endlich einfach möglich alle die Projektoptionen,
das Manifest und das Icon in einem Guss zu halten und auch zu pflegen (sogar in der IDE!).

(Meinen Arbeitskollegen hatte ich heute Morgen eine nicht-funktionierende Version angedreht.
Ich werd nun die neueste Version reinkopieren und bin sicher da wird die Begeisterung ebenfalls
grenzenlos sein.)

Danke

himitsu 2. Jun 2010 23:53

Re: Manifest-Creator
 
Liste der Anhänge anzeigen (Anzahl: 1)
Funktionsteschnich nicht viel
  • "kleine" Geschwindikeitssteigerung bei der Auswertung/Dateizusammenstellung
    (bei zeilenweiser Befüllung bremsen die Memos ja gewaltig)
  • Parameterbehandlung weiter verbessert (nun klappts auch wieder mit der IDE)
  • Code gewaltig aufgeräumt ... die Hauptunit ist nun knapp 1000 Zeilen schlanker :shock:
  • einiges an Code ausgelagert (für andere zugänglich)
    FileInfo (Dateiversion und andere Resourcen)
    Programmparameter auslesen
  • die IDE-Integration funktioniert dadurch endlich auch ohne Hilfsmittel :firejump:
    (siehe Parameter-Thread)
  • das Programm meldet sich nun, falls IDE-Integration sich beim Upgrad ändert ... also jetzt
  • die IDEForward.exe kann danach (manuell) gelöscht werden
  • man kann nun zwischen zwei Resourcen-Compilern auswählen
  • entsprechend wurde die .rc etwas optimiert

Das Icon-Problem nehm ich mir wohl übers Wochenende mal vor.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz