Discussion:
Erstellungsdatum der DLL
(zu alt für eine Antwort)
Andre Grumbach
2007-09-10 14:44:21 UTC
Permalink
Hallo zusammen,
ich soll bei einem meiner Tools ein Copyright ausgeben.

Im großen und ganzen ist das recht einfach, jedoch denke ich in zwei Jahren
bei der nächsten Version bestimmt nicht mehr daran, das Datum zu ändern.
Nun bin ich auf die blöde Idee gekommen, das Erstellungsdatum/Letzte
Änderungsdatum der DLL zu nehmen und davon das Jahr auszugeben.

Ist das irgendwie über die AssemblyInfo oder sonst wie auszuelesen?

Sollte auch bei ASP möglich sein.

Andre
Frank Dzaebel
2007-09-10 15:23:50 UTC
Permalink
Hallo Andre,
Post by Andre Grumbach
ich soll bei einem meiner Tools ein Copyright ausgeben.
Im großen und ganzen ist das recht einfach, jedoch denke ich in zwei Jahren
bei der nächsten Version bestimmt nicht mehr daran, das Datum zu ändern.
Nun bin ich auf die blöde Idee gekommen, das Erstellungsdatum/Letzte
Änderungsdatum der DLL zu nehmen und davon das Jahr auszugeben.
Ist das irgendwie über die AssemblyInfo oder sonst wie auszuelesen?
Ja. Das ist sogar Standard.
Füge einmal Deinem Projekt ein InfoFeld hinzu.
Dadurch bekommst Du eine AboutBox1.cs.
Hier ist der Code schon mit drin. Auch das
Jahr wird schon automatisch auf das Erstellungs-
Jahr gesetzt. Die AboutBox kannst Du einfach
normal instanziieren und mit Show() aufrufen.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Frank Dzaebel
2007-09-10 15:49:30 UTC
Permalink
Post by Frank Dzaebel
Post by Andre Grumbach
Ist das irgendwie über die AssemblyInfo oder sonst wie auszuelesen?
Ja. Das ist sogar Standard.
Wenn Du es nun tatsächlich immer
"mitwachsen" lassen willst, wäre es IMHO
über einen PreBuild-Step am saubersten, der
die AssemblyInfo.cs über Regex ändert, am
saubersten, denn dieses Attribut wird ja
einkompiliert und man würde sonst über rechte Maus
Eigenschaften auf die Exe sehen, welches
tatsächliche Copyright drin ist. Der Text der
Firma (Company) nimmt VS 2005 bei der Erstellung eines
Projektes aus der Registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\RegisteredOrganization

... sodass Du darauf aufbauend und mit
DateTime.Now Dein Vorhaben umsetzen kannst.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-10 16:58:55 UTC
Permalink
Post by Andre Grumbach
Im großen und ganzen ist das recht einfach, jedoch denke ich in zwei
Jahren bei der nächsten Version bestimmt nicht mehr daran, das Datum zu
ändern.
Nun bin ich auf die blöde Idee gekommen, das Erstellungsdatum/Letzte
Änderungsdatum der DLL zu nehmen und davon das Jahr auszugeben.
Im PE-Kopf sind diese Daten zu finden. Ansatz zum Auslesen (in VB.NET):

<URL:http://groups.google.com/group/microsoft.public.de.german.entwickler.dotnet.vb/msg/f4fd116a3083a178>
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-10 17:49:04 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
.. auf die Idee gekommen, das Erstellungsdatum/Letzte Änderungsdatum der
DLL zu nehmen und davon das Jahr auszugeben.
Im PE-Kopf sind diese Daten zu finden.
Man sollte ggf. doch eher folgendes nehmen:

int year = new FileInfo(Assembly.GetExecutingAssembly().
Location).CreationTime.Year;

Es geht ja aber nicht darum, das auszulesen, sondern
das *Copyright* auch richtig in die Assembly zu schreiben,
was der aufwändigere Teil an der Sache ist (ich erwähnte es).


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-10 18:38:24 UTC
Permalink
Hallo Frank!
Post by Frank Dzaebel
Post by Herfried K. Wagner [MVP]
.. auf die Idee gekommen, das Erstellungsdatum/Letzte Änderungsdatum der
DLL zu nehmen und davon das Jahr auszugeben.
Im PE-Kopf sind diese Daten zu finden.
int year = new FileInfo(Assembly.GetExecutingAssembly().
Location).CreationTime.Year;
... und da werden die PE-Metadaten gelesen oder einfach nur das z.B. durch
Kopieren veränderbare Dateierstellungsdatum?
Post by Frank Dzaebel
Es geht ja aber nicht darum, das auszulesen, sondern
das *Copyright* auch richtig in die Assembly zu schreiben,
was der aufwändigere Teil an der Sache ist (ich erwähnte es).
Das ist doch eher unüblich. Microsoft benutzt bei Windows XP bzw. .NET
Framework 2.0 meist "© Microsoft Corporation. Alle Rechte vorbehalten." als
Copyrighthinweis, ohne dabei ein Jahr anzuführen. Zur Darstellung in der
Anwendung muß das Jahr ja nicht fest einkompiliert werden, sondern kann zur
Laufzeit bestimmt werden.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-10 19:56:00 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
int year = new FileInfo(Assembly.GetExecutingAssembly().
Location).CreationTime.Year;
... und da werden die PE-Metadaten gelesen oder einfach nur das z.B. durch
Kopieren veränderbare Dateierstellungsdatum?
Der OP möchte nur, dass im *Copyright* der Assembly
beim Build das aktuelle Jahr steht. Ein solches Copyright
wird nicht durch Kopieren verändert.
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Es geht ja aber nicht darum, das auszulesen, sondern
das *Copyright* auch richtig in die Assembly zu schreiben,
was der aufwändigere Teil an der Sache ist (ich erwähnte es).
Das ist doch eher unüblich. Microsoft benutzt bei Windows XP bzw. .NET
Framework 2.0 meist "© Microsoft Corporation.
Herfried, Standard in den VS erstellten C# Assemblies
unter .NET 2.0 ist ein Copyright-Eintrag, den Du in der
AssemblyInfo.cs nachlesen kannst. Der OP nannte es bereits.
Etwa so:
[assembly: AssemblyCopyright("Copyright © Firmenname 2007")]
(für Firmenname wird der Wert aus dem von mir angegebenen
Registry-Schlüssel genommen. Für 2007 das Jahr des aktuellen Datums)
übrigens das gleiche in VB.NET (AssemblyInfo.vb).

Dieses Copyright kannst Du später z.B. über "RechteMaus-
Eigenschaften" der Assembly nachprüfen.

Wie der Copyright-String aufgebaut ist und wie der
OP ihn anpassen kann, erwähnte ich bereits.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Frank Dzaebel
2007-09-10 20:14:07 UTC
Permalink
Post by Frank Dzaebel
Post by Herfried K. Wagner [MVP]
Das ist doch eher unüblich. Microsoft benutzt bei Windows XP bzw. .NET
Framework 2.0 meist "© Microsoft Corporation.
Herfried, Standard in den VS erstellten C# Assemblies
unter .NET 2.0 ist ein Copyright-Eintrag, den Du in der
AssemblyInfo.cs nachlesen kannst. Der OP nannte es bereits.
Das ändert sich übrigens auch in ORCAS nicht,
bei dem die Zusammensetzung des Copyrights
genauso wie von mir angegeben ist. Nun *muss*
niemand den Standard benutzen, aber der OP
möchte ja hier eine Jahrenszahl.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-10 20:29:41 UTC
Permalink
Hallo Frank!
Post by Frank Dzaebel
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
int year = new FileInfo(Assembly.GetExecutingAssembly().
Location).CreationTime.Year;
... und da werden die PE-Metadaten gelesen oder einfach nur das z.B.
durch Kopieren veränderbare Dateierstellungsdatum?
Der OP möchte nur, dass im *Copyright* der Assembly
beim Build das aktuelle Jahr steht. Ein solches Copyright
wird nicht durch Kopieren verändert.
Das liegt ja wohl auf der Hand, aber das habe ich auch nicht bezweifelt.
Meine Aussage bezog sich einzig auf den obenstehenden Code mit
'FileInfo.CreationTime'.
Post by Frank Dzaebel
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Es geht ja aber nicht darum, das auszulesen, sondern
das *Copyright* auch richtig in die Assembly zu schreiben,
was der aufwändigere Teil an der Sache ist (ich erwähnte es).
Das ist doch eher unüblich. Microsoft benutzt bei Windows XP bzw. .NET
Framework 2.0 meist "© Microsoft Corporation.
Herfried, Standard in den VS erstellten C# Assemblies
unter .NET 2.0 ist ein Copyright-Eintrag, den Du in der
AssemblyInfo.cs nachlesen kannst. Der OP nannte es bereits.
[assembly: AssemblyCopyright("Copyright © Firmenname 2007")]
(für Firmenname wird der Wert aus dem von mir angegebenen
Registry-Schlüssel genommen. Für 2007 das Jahr des aktuellen Datums)
übrigens das gleiche in VB.NET (AssemblyInfo.vb).
Ja, ich ziehe die Sinnhaftigkeit dieser Vorgabe in Zweifel, wenn sich nicht
einmal Microsoft bei den DLLs des .NET Frameworks daran hält. Ich würde das
Jahr schlichtweg nicht in den Copyright-Metadaten als Zeichenfolge ablegen,
sondern im Programm anzeigen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-10 21:12:57 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Herfried, Standard in den VS erstellten Assemblies [...]
Ja, ich ziehe die Sinnhaftigkeit dieser Vorgabe in Zweifel, wenn sich
nicht einmal Microsoft bei den DLLs des .NET Frameworks daran hält.
Das macht Microsoft hier *unregelmässig*, in einigen
wird das Jahr von Microsoft *mit* ins Copyright hineingeschrieben,
in einigen nicht. Z.B. C:\Windows\Microsoft.NET\Framework.
Ist aber nicht das Thema.
Es gibt eine Reihe von Gründen Jahreszahlen auch
aus dem Copyright herauszulassen oder hereinzunehmen,
aber für eine über VS erstellte Anwendung bleibt nun mal
die Jahreszahl schlicht Standard.

Wie gesagt, es besteht kein Zwang, nur: der OP
möchte gerade diese Jahreszahl. Ich denke, wir
sollten es damit dann bewenden lassen, die
Meinungen sind ja aufgezeigt worden und klar.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
unknown
2007-09-11 07:19:24 UTC
Permalink
Hallo Frank!
Post by Frank Dzaebel
int year = new FileInfo(Assembly.GetExecutingAssembly().
Location).CreationTime.Year;
Dann bekommt man aber meist das Jahr der Installation (hängt auch vom der
verwendeten Distributions-Methode ab). Ich IMO nicht sinnvoll für ein
Copywrite zu verwenden.

Über den Eintrag im PE-Header bekommt man aber (IMO richtigerweise) das
Datum der Erstellung (Kompilierung).


mfg GP
Frank Dzaebel
2007-09-11 07:44:18 UTC
Permalink
Hallo Günter,
Post by unknown
Über den Eintrag im PE-Header bekommt man aber (IMO
richtigerweise) das Datum der Erstellung (Kompilierung).
Zum einen ist es IMHO ziemlicher Unsinn, Daten aus
PE Headern binär lesen zu wollen, um in diesem Szenario ein
Erstellungsdatum zu holen, wo das ja eh
im *Copyright* Attribut stehen muss/soll. Das Erstellungsdatum
ist vor allen Dingen gar *kein* Problem.
Zum Zeitpunkt des Builds *weisst* Du das über "DateTime.Now.Year".
Später kannst Du es eben sauber auslesen, auch automatisiert
erstellen.
Keine PE Hacks, sondern *kurzer* managed Code, den Du auch
im Standard InfoFeld ähnlich wiederfindest.

Richtigerweise sollte das über ein im Assembly-
Manifest verankertes Attribut gehen.
Das haben wir allerdings schon alles diskutiert gehabt.

Dabei kann man ja durchaus mal solche Spielereien
mit binären PE Headern machen, nur
hier leider vollkommen fehl am Platze.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-11 16:01:25 UTC
Permalink
Hallo Frank!
Post by Frank Dzaebel
Dabei kann man ja durchaus mal solche Spielereien
mit binären PE Headern machen, nur
hier leider vollkommen fehl am Platze.
Nein, definitiv nicht. Mir ist auch nicht klar, wie du zur Annahme gelangst,
daß das Jahr unbedingt in der Copyrightzeichenfolge abgelegt werden sollte;
der OP hat dies nicht erwähnt.

Der von mir genannte PE-Eintrag erfüllt genau den Zweck des OPs, nämlich
"ich soll bei einem meiner Tools ein Copyright ausgeben" (meine
Interpretation: Auf der Konsole oder auf einem Formular bzw. in einer
Website).
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-11 16:44:17 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Dabei kann man ja durchaus mal solche Spielereien
mit binären PE Headern machen, nur
hier leider vollkommen fehl am Platze.
Nein, definitiv nicht.
Mir fällt nicht ein möglicher Zweck ein,
der hier unsaubere PE Hacks rechtfertigen könnte.
Bei aller Liebe. Aber da sind die Meinungen
unterschiedlich und vollkommen unsinnig,
jetzt hier wieder das "Ja Nein" Spiel anzufangen.

Das Erstellungsdatum ist viel einfacher
über "DateTime.Now.Year" während der
Erstellung zu bekommen. Dann *sauber*
in ein Assembly-Attribut (z.B. Ende von Copyright)
- was Standard bei allen Visual Studio Projekten ist -
schreiben und so beliebig kurz managed auslesbar.

Hier ist definitiv *keine* Notwendigkeit mit unsauberen
PE Hacks herumzuspielen.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Christoph Schweers
2007-09-11 18:09:06 UTC
Permalink
Post by Frank Dzaebel
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Dabei kann man ja durchaus mal solche Spielereien
mit binären PE Headern machen, nur
hier leider vollkommen fehl am Platze.
Nein, definitiv nicht.
Mir fällt nicht ein möglicher Zweck ein,
der hier unsaubere PE Hacks rechtfertigen könnte.
Bei aller Liebe. Aber da sind die Meinungen
unterschiedlich und vollkommen unsinnig,
jetzt hier wieder das "Ja Nein" Spiel anzufangen.
Das Erstellungsdatum ist viel einfacher
über "DateTime.Now.Year" während der
Erstellung zu bekommen. Dann *sauber*
in ein Assembly-Attribut (z.B. Ende von Copyright)
- was Standard bei allen Visual Studio Projekten ist -
schreiben und so beliebig kurz managed auslesbar.
Hier ist definitiv *keine* Notwendigkeit mit unsauberen
PE Hacks herumzuspielen.
Um den Abend nicht allzu langweilig werden zu lassen :-) Ich sehe im
Moment bei beiden Loesungen noch ein Problem:

PE Hack:
Ich/Man bekommt eine IOException wenn die hier beschriebene Methode auf
das eigene, gerade ausgefuehrte Assembly angewendet wird.
"Der Prozess kann nicht auf die Datei
D:\prj\Sesame\Sesam\bin\Debug\Sesam.exe zugreifen, da sie von einem
anderen Prozess verwendet wird."

Assembly-Attribut:
Wie laesst sich das (halbwegs) sauber mittels PreBuild-Step realisieren,
wenn die AssemblyInfo.cs auch noch versionsverwaltet ist?


Gruss
Christoph
--
The idea is to die young as late as possible.
-- Ashley Montagu
09-F9-11-02-9D-74-E3-5B-D8-41-56-C5-63-56-88-C0
Frank Dzaebel
2007-09-11 18:22:39 UTC
Permalink
Hallo Christoph,
Post by Christoph Schweers
Wie laesst sich das (halbwegs) sauber mittels PreBuild-Step realisieren,
wenn die AssemblyInfo.cs auch noch versionsverwaltet ist?
Du meinst ein CheckIn/CheckOut?
Das ist bei allen halbwegs ordentlichen
Produkten diesbzgl. normal über COM-Interfaces
und somit managed Interop Assemblies möglich.
Es werden oft auch Alternativverfahren angeboten.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Christoph Schweers
2007-09-11 19:04:53 UTC
Permalink
Post by Frank Dzaebel
Hallo Christoph,
Post by Christoph Schweers
Wie laesst sich das (halbwegs) sauber mittels PreBuild-Step
realisieren, wenn die AssemblyInfo.cs auch noch versionsverwaltet ist?
Du meinst ein CheckIn/CheckOut?
Das ist bei allen halbwegs ordentlichen
Produkten diesbzgl. normal über COM-Interfaces
und somit managed Interop Assemblies möglich.
Es werden oft auch Alternativverfahren angeboten.
Hallo Frank,

mein Problem ist folgendes:
Ich kenne es so das haeufig bestimmte Versionsstaende mit einem Label
o.Ae. 'gefixt' werden um z.B. ein reproduzierbare Source-Basis zu
erhalten. Wenn aber vor dem Kompilieren eine versionierte Datei nochmal
geaendert wird, ist die obige Bedingung verletzt ...


Gruss
Christoph
--
The idea is to die young as late as possible.
-- Ashley Montagu
09-F9-11-02-9D-74-E3-5B-D8-41-56-C5-63-56-88-C0
Frank Dzaebel
2007-09-11 19:30:06 UTC
Permalink
Hallo Christoph,
Post by Christoph Schweers
Ich kenne es so das haeufig bestimmte Versionsstaende mit einem Label
o.Ae. 'gefixt' werden um z.B. ein reproduzierbare Source-Basis zu
erhalten. Wenn aber vor dem Kompilieren eine versionierte Datei nochmal
geaendert wird, ist die obige Bedingung verletzt ...
Du würdest ja diesen Gesamtfix *auch* mit dem
Prebuildstep durchführen. Der Fix ist erst dann
abgeschlossen, wenn alle bezogenen Dateien auch
paketiert/übersetzt/eingebunden sind. Da wäre also kein
Problem. Irgendwann übersetzt Du halt und dann wird das
Attribut eben geschrieben. Was dann geschrieben wird,
kann aus dem Verwaltungssystem kommen, oder
beliebig angepasst werden. Alles nicht mit
PE Hacks möglich. Zur Klarheit kurz auch:
Du veränderst nicht irgendeine Version oder Label.
Du veränderst das Copyright. Hier das Jahr.

Es ist durchaus ein guter Gedanke, dieses
Jahr auch von einem Versionsverwaltungssystem
kommen zu lassen, was gerade in einer Lösung mit Attribut
ja geht, aber *nicht* in einem fixen starren PE Hack.
Im Prebuildstep würde man sich das Jahr dann
über COM-Interop Assembly aus dem Verwaltungs-
System holen. Die Flexibilität und Sauberkeit der
Lösung ist hier IMHO sehr vorteilhaft.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-11 20:00:29 UTC
Permalink
Hallo Frank!
Was dann geschrieben wird, kann aus dem
Verwaltungssystem kommen, oder
beliebig angepasst werden. Alles nicht mit
PE Hacks möglich.
Braucht man ja auch nicht, da das Datum vom Linker beim Erstellen der
PE-Datei eingebettet wird. Außerdem sehe ich nicht ein, was am auslesen der
PE-Information ein "Hack" sein sollte. Daß die Information darin abgelegt
ist, ist für das PE-Format dokumentiert.
Es ist durchaus ein guter Gedanke, dieses
Jahr auch von einem Versionsverwaltungssystem
kommen zu lassen, was gerade in einer Lösung mit Attribut
ja geht, aber *nicht* in einem fixen starren PE Hack.
Das geht eben ganz automatisch, da beim Erstellen das aktuelle Datum ohnehin
im PE-Kopf eingebettet wird. Der "fixe starre PE Hack" ist weder fix, noch
starr, noch ist er ein "Hack".
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-11 20:51:52 UTC
Permalink
Hallo Herfried,
Post by Frank Dzaebel
PE Hacks möglich.
... vom Linker beim Erstellen der PE-Datei eingebettet wird.
Hier ging es gerade um ein Datum/Jahr aus
dem Versionsverwaltungssystem.
Das ist mit dem PE Hack nicht möglich.
Post by Frank Dzaebel
Es ist durchaus ein guter Gedanke, dieses
Jahr auch von einem Versionsverwaltungssystem
kommen zu lassen, was gerade in einer Lösung mit Attribut
ja geht, aber *nicht* in einem fixen starren PE Hack.
Das geht eben ganz automatisch, da beim Erstellen das aktuelle Datum
ohnehin im PE-Kopf eingebettet wird.
Du hast da nicht aufgepasst.
In einem einem FIX/Label aus einem
Versionsverwaltungssystem kann ein
Datum stehen, was Marketing (etc.) abhängig ist.
Das geht nicht mit dem starren
unsauberen PE Hack.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-11 21:10:28 UTC
Permalink
Hallo Frank!
Post by Frank Dzaebel
Post by Frank Dzaebel
PE Hacks möglich.
... vom Linker beim Erstellen der PE-Datei eingebettet wird.
Hier ging es gerade um ein Datum/Jahr aus
dem Versionsverwaltungssystem.
Das ist mit dem PE Hack nicht möglich.
Warum erwähnst Du das dann? Die Lösung mit den PE-Daten kann genutzt werden,
um das Datum je nach Kompilat zur Laufzeit zu ermitteln. Nicht mehr und
nicht weniger. Sie ist deswegen für dem ihr zugedachten Zweck weder schlecht
noch unflexibel, weil Du das Szenario änderst.
Post by Frank Dzaebel
Post by Frank Dzaebel
Es ist durchaus ein guter Gedanke, dieses
Jahr auch von einem Versionsverwaltungssystem
kommen zu lassen, was gerade in einer Lösung mit Attribut
ja geht, aber *nicht* in einem fixen starren PE Hack.
Das geht eben ganz automatisch, da beim Erstellen das aktuelle Datum
ohnehin im PE-Kopf eingebettet wird.
Du hast da nicht aufgepasst.
Bitte unterlasse derartige Unterstellungen.
Post by Frank Dzaebel
In einem einem FIX/Label aus einem
Versionsverwaltungssystem kann ein
Datum stehen, was Marketing (etc.) abhängig ist.
Ja, dann kann man es natürlich behandeln wie die anderen Metadaten auch. Bei
"Microsoft Office 2007" wäre es wenig sinnvoll, das Jahr irgendwie
automatisiert einzutragen oder aus dem Kompilat zu ermitteln, sondern man
würde schlichtweg die Ressource bzw. die Metadaten vor der Kompilierung
anpassen.
Post by Frank Dzaebel
Das geht nicht mit dem starren
unsauberen PE Hack.
Es ist weder ein "Hack" noch unsauber.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-11 21:38:47 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Hier ging es gerade um ein Datum/Jahr aus
dem Versionsverwaltungssystem.
Das ist mit dem PE Hack nicht möglich.
Warum erwähnst Du das dann?
Weil ein Christoph danach fragte, da hast Du
schon wieder nicht aufgepasst.
Bitte lies die Postings auch!
Post by Herfried K. Wagner [MVP]
Die Lösung mit den PE-Daten kann genutzt werden, um das Datum je nach
Kompilat zur Laufzeit zu ermitteln.
Bzgl. des PE Hacks wiederhole ich mich mehrfach,
es ist technisch recht langweilig momentan :-(
Der PE Hack ist nicht notwendig.
Der User möchte das Copyright mit einer aktuellen
Jahres-Zahl versehen. Das kann man nicht mit unflexiblen
PE Hacks. Es würde auch ggf. im Assemblyattribut falsch sein.
Der Standard ist bei Visual Studio Projekten für Copyright
ist seit Anbeginn und auch in ORCAS:
Copyright © Firmenname Jahr
Alles schon X fach gesagt. Dieses Jahr muss
korrekt gesetzt werden. PE Hacks können das
so nicht und sind auch nicht notwendig dafür.


Man möchte ggf. das Jahr aus einem
Versionverwaltungssystem holen. Das kann man
nicht mit einem unflexiblen starren PE Hack.
Post by Herfried K. Wagner [MVP]
... "Hack" noch unsauber.
Weisst Du Herfried, mache das bitte in Deinen
Programmen so viele PE Hacks, VB6-Einschübe
etc. wie Du es für richtig hältst.
Ich habe eine andere Meinung von Sauberkeit /
managed Code. Wir befinden uns hier unter
.NET und nicht mehr in unmanged Welten.

Da ist für mich keine Diskussions-Grundlage.
Ich bevorzuge oft die managed Lösungen.
Sei es Faulheit oder Professionalität ;-)


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-11 20:01:24 UTC
Permalink
Hallo Christoph!
Post by Christoph Schweers
Um den Abend nicht allzu langweilig werden zu lassen :-) Ich sehe im
Ich/Man bekommt eine IOException wenn die hier beschriebene Methode auf
das eigene, gerade ausgefuehrte Assembly angewendet wird.
"Der Prozess kann nicht auf die Datei
D:\prj\Sesame\Sesam\bin\Debug\Sesam.exe zugreifen, da sie von einem
anderen Prozess verwendet wird."
Vermutlich reicht es aus, beim Öffnen der Datei 'FileShare.ReadWrite' zu
setzen, um sowohl Lesen als auch Schreiben zuzulassen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Thorsten Doerfler
2007-09-11 21:58:37 UTC
Permalink
Richtiger: Mit dem PE Header ist unter Windows jedes ausführbare Modul
ausgestattet (EXE/DLL). Das Timestamp Feld darin ist kein Produkt des
Zufalls, sondern eine ebenfalls dokumentierte Eigenschaft dieser
Struktur. Daher leuchtet mir nicht ein, warum man das als "Hack"
einstufen sollte. Aber jedem seine Meinung.
Post by Christoph Schweers
Ich/Man bekommt eine IOException wenn die hier beschriebene Methode auf
das eigene, gerade ausgefuehrte Assembly angewendet wird.
"Der Prozess kann nicht auf die Datei
D:\prj\Sesame\Sesam\bin\Debug\Sesam.exe zugreifen, da sie von einem
anderen Prozess verwendet wird."
Der andere Prozess ist Dein eigener bzw. der VS Debugger. Korrigierte
Version:

http://groups.google.com/groups?selm=***@news.bdsw.de

Stream lStream = File.Open(filename,
FileMode.Open,
FileAccess.Read,
FileShare.Read);

Thorsten Dörfler
Frank Dzaebel
2007-09-12 05:31:27 UTC
Permalink
Hallo Thorsten,
... leuchtet mir nicht ein, warum man das als "Hack"
einstufen sollte. Aber jedem seine Meinung.
Ich sehe das allerdings auch als Hack in diesem Szenario.
Dabei ist nicht die Codequalität gemeint,
die zwar Fehler hatte, aber ja leicht korrigiert werden kann.
Auch bezieht der Code sich auf dokumentierte
Schnittstellen des PE Formates, aber für .NET-OS gilt:

- Ein Betriebssystem ist nicht gezwungen
das PE Format als Ausführungsformat zu nehmen.
Der Code würde auf solchen OS fehlschlagen.
Saubere Abstützung auf Attribute wäre dagegen
nicht anfällig gegenüber OS-Wechsel. Die Lösung
über .NET eigene Schichten/Schnittstellen ist - wenn
möglich - normal zu bevorzugen. Die wichtigsten OS
haben zwar PE Unterstützung, aber vom Konzept
her, ist die Lösung über Ausführungsformate anstatt
über .NET Attribute IMHO ein Hack.


Da ist jetzt noch nicht dabei, dass der OP
ja hier ins Copyright eine Jahreszahl hineinschreiben
möchte. Das macht das PE Lesen ja eh nicht.
Auch ist die Jahreszahl nicht änderbar und
beispielsweise an Versionsverwaltungssysteme
anpassbar. Dafür kannst Du aber nichts,
Dein Posting wurde ja nur verlinkt.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-12 05:40:19 UTC
Permalink
Hallo Frank!
Post by Frank Dzaebel
Da ist jetzt noch nicht dabei, dass der OP
ja hier ins Copyright eine Jahreszahl hineinschreiben
möchte. Das macht das PE Lesen ja eh nicht.
Das will der OP augenscheinlich nicht, sondern das ist nur Deine für mich
nicht nachvollziehbare Interpretation. Der OP erwähnt lediglich, aus
"AssemblyInfo.cs" das Datum *auslesen* zu wollen, um es dann *auszugeben*.
Genau das (und nichts anderes) ist mit der PE-Lösung möglich.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-12 06:06:23 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Da ist jetzt noch nicht dabei, dass der OP
ja hier ins Copyright eine Jahreszahl hineinschreiben
möchte. Das macht das PE Lesen ja eh nicht.
Das will der OP augenscheinlich nicht, sondern das ist nur Deine für mich
nicht nachvollziehbare Interpretation. Der OP erwähnt lediglich, aus
"AssemblyInfo.cs" das Datum *auslesen* zu wollen, um es dann *auszugeben*.
Zitat OP: "soll bei einem meiner Tools ein *Copyright* ausgeben.".
Es ist Standard unter allen Visual Studio .NET Projekten (auch in ORCAS),
dass im Copyright das Jahr steht. Dieses müsste also
eh angepasst werden, denn es würde sonst zu Widersprüchen führen.
Der PE Hack kann das nicht.
Das kann viel sauberer/flexibler über Attribute gemacht werden.

Ein Copyright (so macht es MS z.T. auch bei .NET Assemblies)
kann auch 1992-2002 o.ä. beinhalten. Das ist alles möglich.
Da reicht schlicht die PE Information nicht, die nur einen einzelnen
Timestamp beinhaltet.

Auch gilt:

- Ein Betriebssystem ist nicht gezwungen
das PE Format als Ausführungsformat zu nehmen.
Der Code würde auf solchen OS fehlschlagen.
Saubere Abstützung auf Attribute wäre dagegen
nicht anfällig gegenüber OS-Wechsel. Die Lösung
über .NET eigene Schichten/Schnittstellen ist - wenn
möglich - normal zu bevorzugen.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-12 06:26:12 UTC
Permalink
Post by Frank Dzaebel
Ein Copyright (so macht es MS z.T. auch bei .NET Assemblies)
kann auch 1992-2002 o.ä. beinhalten. Das ist alles möglich.
Da reicht schlicht die PE Information nicht, die nur einen einzelnen
Timestamp beinhaltet.
Doch, natürlich. Denn der erste Wert ist ja ohnehin fest und kann
einkompiliert werden. Lediglich der zweite soll variieren, je nachdem, wann
die Kompilierung erfolgte. Und ja, ich halte das auch für wenig sinnvoll und
würde das Jahr händisch anpassen.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Frank Dzaebel
2007-09-12 07:02:13 UTC
Permalink
Post by Herfried K. Wagner [MVP]
Post by Frank Dzaebel
Ein Copyright (so macht es MS z.T. auch bei .NET Assemblies)
kann auch 1992-2002 o.ä. beinhalten. Das ist alles möglich.
Da reicht schlicht die PE Information nicht, die nur einen einzelnen
Timestamp beinhaltet.
Doch, natürlich. Denn der erste Wert ist ja ohnehin
fest und kann einkompiliert werden.
Das ist ja u.a. das Problem! Ein Copyright ist eher
eine Marketing- bzw. juristische Info und stimmt nicht
immer mit der realen Datei-Erstellungszeit überein.
Auch der erste Wert ist also schon gefährdet,
wenn man ihn aus der Datei holt. Gerade hier
sollte man flexibel und anpassbar arbeiten.
Post by Herfried K. Wagner [MVP]
Lediglich der zweite soll variieren, je nachdem, wann
die Kompilierung erfolgte. Und ja, ich halte das auch
für wenig sinnvoll und würde das Jahr händisch anpassen.
OK, Du würdest ihn händisch eintragen. Ich automatisiert
über Attribut, wenn möglich. Es gibt aber auch
Zwischenlösungen, z.B. eine generierte Warning, o.ä..


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Herfried K. Wagner [MVP]
2007-09-12 16:04:46 UTC
Permalink
Post by Frank Dzaebel
Das ist ja u.a. das Problem! Ein Copyright ist eher
eine Marketing- bzw. juristische Info und stimmt nicht
immer mit der realen Datei-Erstellungszeit überein.
Auch der erste Wert ist also schon gefährdet,
wenn man ihn aus der Datei holt. Gerade hier
sollte man flexibel und anpassbar arbeiten.
Genau das würde ich einfach in "AssemblyInfo.cs" oder über die
Projekteigenschaften machen. Ich sehe da keinen Grund, kompliziert
nachzubauen, was VS ohnehin bietet.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Thorsten Doerfler
2007-09-12 09:39:52 UTC
Permalink
Hallo Frank,
Post by Frank Dzaebel
Auch bezieht der Code sich auf dokumentierte
- Ein Betriebssystem ist nicht gezwungen
das PE Format als Ausführungsformat zu nehmen.
Das Betriebssystem nicht, aber ich meine mich dunkel daran zu
erinnern, das .NET das schon so haben möchte. Mono unterstützt ja
ebenfalls das PE/COFF Format und ist m.W. die bisher einzige
Implementierung für non-Windows.
Post by Frank Dzaebel
Saubere Abstützung auf Attribute wäre dagegen
nicht anfällig gegenüber OS-Wechsel.
Wenn der Kompiler solch ein Attribut automatisch pflegen würde, hätte
das meine 100%ige Unterstützung. Keine Frage. Die Timestamp im PE ist
aber bis .NET 3.5 das einzige (ja, nicht .NET) "Attribut", das diese
Information automatisch liefern kann.
Post by Frank Dzaebel
Da ist jetzt noch nicht dabei, dass der OP
ja hier ins Copyright eine Jahreszahl hineinschreiben
möchte. Das macht das PE Lesen ja eh nicht.
Nein.

Für das Copyright würde ich so eine Info auch nicht verwenden. Das
sind Informationen, die ich händisch verwalten würde bzw. per Makro,
je nach Umfang des Projekts. Rechtlich gesehen, hat der "Copyright"
Vermerk hier in DE ja ohnehin keine Relevanz.

Thorsten Dörfler
Frank Dzaebel
2007-09-12 10:13:49 UTC
Permalink
Hallo Thorsten,
Post by Thorsten Doerfler
Post by Frank Dzaebel
Auch bezieht der Code sich auf dokumentierte
- Ein Betriebssystem ist nicht gezwungen
das PE Format als Ausführungsformat zu nehmen.
Das Betriebssystem nicht, aber ich meine mich dunkel daran zu
erinnern, das .NET das schon so haben möchte.
"möchte" ... es wäre 100% abzusichern,
dass so sein "muss" - ich kenne momentan
keine solche Abhandlung.
Das müsste dann irgendwo spezifiziert sein.
Auch Multi-bittige Architekturen wären zu berücksichtigen.
Bisher haben wir PE IMHO nur für "32-bit and 64-bit
versions of Windows operating systems".
Post by Thorsten Doerfler
Mono unterstützt ja ebenfalls das PE/COFF ...
Korrekt. Hätte sich aber IMHO auch gegen Binärkompatibilität
aussprechen können. Die wichtigsten OS nutzen momentan
PE, das erwähnte ich auch schon.
Post by Thorsten Doerfler
Für das Copyright würde ich so eine Info auch nicht verwenden. Das
sind Informationen, die ich händisch verwalten würde bzw. per Makro,
je nach Umfang des Projekts. Rechtlich gesehen, hat der "Copyright"
Vermerk hier in DE ja ohnehin keine Relevanz.
Ja, Makro, Addin, PreBuildStep, etc., das sind auch die
Dinge, an die ich auch denke. Auch ein Warning an der
Stelle wäre denkbar.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Christoph Schweers
2007-09-15 08:21:17 UTC
Permalink
Post by Thorsten Doerfler
Post by Christoph Schweers
Ich/Man bekommt eine IOException wenn die hier beschriebene Methode auf
das eigene, gerade ausgefuehrte Assembly angewendet wird.
"Der Prozess kann nicht auf die Datei
D:\prj\Sesame\Sesam\bin\Debug\Sesam.exe zugreifen, da sie von einem
anderen Prozess verwendet wird."
Der andere Prozess ist Dein eigener bzw. der VS Debugger. Korrigierte
Stream lStream = File.Open(filename,
FileMode.Open,
FileAccess.Read,
FileShare.Read);
Hallo Thorsten,

vielen Dank fuer diese Korrektur! Nun funktioniert es auch bei mir.

Ein besonderes Dankeschon auch an Frank und Herfried fuer die engagierte
Diskussion bezueglich des Fuer und Wider der beiden hier
vorgeschlagenen Loesungswege.

Gruss
Christoph
--
The idea is to die young as late as possible.
-- Ashley Montagu
09-F9-11-02-9D-74-E3-5B-D8-41-56-C5-63-56-88-C0
Carl Christian Schaffert
2007-09-12 08:27:29 UTC
Permalink
Hallo Andre,

wie du das am Ende handhaben willst ist letztendlich völlig egal, denn
Angaben hinsichtlich der "Copyrights" sind heute völlig unnötig, da sich das
Recht hinsichtlich "Copyrights" schon vor vielen Jahren geändert hat.
Übrigens entstammt das Ganze dem angloamerikanichen Rechtssystem und hat mit
dem kontinentaleuropäischen Recht nichts zu tun. In Europa, insbesondere
Deutschland gilt das "Urheberrecht" das dem "Copyright" Sinngemäß entspricht
aber in wesentlichen Punkten unterscheidet. In beiden Rechtssystemen ist es
heute nicht mehr nötig auf den Rechtsanspruch explizit hinzuweisen, denn der
Vermerk selbst führt in keinem der beiden Rechtssysteme zu einem bestehen
von Urheberrechten/Copyrights!!!
Ob etwas geschützt ist, richtet sich ausschließlich nach den jeweiligen
geltenden Gesetzen. Bei uns erlöschen Urheberrechte eh nie und im
angloamerikanischen Rechtssystem seit 1998 auch nicht... (womit sich
übrigens die Angabe einer Jahreszahl erübrigt hat)

Übrigens... der Begriff "Copyrights" hat im kontinentaleuropäischen Recht
überhaupt keine Wirkung..ist also letztendlich "nur" Makulatur und dient
vielleicht dazu, das Ego des Verfassers etwas aufzumöbeln *smile*

Es bleibt dir also "Frei" bzw. liegt in deinem Ermessen solche Vermerke
anzugeben oder eben nicht... auf die jeweilige Rechtsprechung und den
Rechteinhaber hat dies, wie schon erwähnt, jedoch keinen Einfluss. Eine
"Falsch"-Angabe, wenn man sie macht, kann jedoch zu rechtlichen Konsequenzen
führen!

Gruß Carl

Übrigens...
die Angabe einer Jahreszahl kommt auch aus dem angloamerikanischen
Rechtssystem (im kontinentaleuropäischen Recht war dies noch "nie"
notwendig) denn im angloamerikanischen Rechtssystem war es bis 1998
notwendig seine Rechte auch Eintragen zu lassen und es gab eine Frist...wenn
mich nicht alles täuscht für "Private 75Jahre und für Unternehmen 95
Jahre... während derer man dieses Recht innehaben konnte, danach war es eh
frei... aber wie schon erwähnt, dies wurde 1998 geändert!
Frank Dzaebel
2007-09-12 09:06:22 UTC
Permalink
Hallo Carl Christian,
Post by Carl Christian Schaffert
letztendlich "nur" Makulatur und dient
vielleicht dazu, das Ego des Verfassers
etwas aufzumöbeln *smile*
Unterschätze das Jahresdatum in Copyrights und von
Applikationen generell nicht.
Der Kunde schaut da sehr wohl drauf und nimmt das mit zur
Empfindung, ob das Produkt als neu einzuschätzen ist.
Man kann dadurch durch Marketing-Entscheidungen Produkte
auf neu trimmen oder neutral lassen. Ich habe den Einfluss dieser
zunächst belanglos scheinenden Informationen
schon selber in Firmen erlebt.
Diese Firmen mussten z.T. ehebliche finanzielle Einbussen
hinnehmen, da Marketing-Fehler in diesem Bereich gemacht
wurden.
Es ist also nicht nur der rein rechtliche Aspekt,
der hier zu berücksichtigen wäre.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Carl Christian Schaffert
2007-09-12 09:11:57 UTC
Permalink
"Frank Dzaebel" <***@daimlerchrysler.com> schrieb im Newsbeitrag news:***@o80g2000hse.googlegroups.com...
Hallo Carl Christian,
Post by Carl Christian Schaffert
letztendlich "nur" Makulatur und dient
vielleicht dazu, das Ego des Verfassers
etwas aufzumöbeln *smile*
Unterschätze das Jahresdatum in Copyrights und von
Applikationen generell nicht.
Der Kunde schaut da sehr wohl drauf und nimmt das mit zur
Empfindung, ob das Produkt als neu einzuschätzen ist.
Man kann dadurch durch Marketing-Entscheidungen Produkte
auf neu trimmen oder neutral lassen. Ich habe den Einfluss dieser
zunächst belanglos scheinenden Informationen
schon selber in Firmen erlebt.
Diese Firmen mussten z.T. ehebliche finanzielle Einbussen
hinnehmen, da Marketing-Fehler in diesem Bereich gemacht
wurden.
Es ist also nicht nur der rein rechtliche Aspekt,
der hier zu berücksichtigen wäre.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Carl Christian Schaffert
2007-09-12 09:27:16 UTC
Permalink
Ups.. das ging eben daneben...sorry...

Hallo Frank,
Post by Frank Dzaebel
Unterschätze das Jahresdatum in Copyrights und von
Applikationen generell nicht.
Der Kunde schaut da sehr wohl drauf und nimmt das mit zur
Empfindung, ob das Produkt als neu einzuschätzen ist.
Man kann dadurch durch Marketing-Entscheidungen Produkte
auf neu trimmen oder neutral lassen. Ich habe den Einfluss dieser
zunächst belanglos scheinenden Informationen
schon selber in Firmen erlebt.
Diese Firmen mussten z.T. ehebliche finanzielle Einbussen
hinnehmen, da Marketing-Fehler in diesem Bereich gemacht
wurden.
Es ist also nicht nur der rein rechtliche Aspekt,
der hier zu berücksichtigen wäre.
dass Marketing-Aspekte zu berücksichtigen sind, das ist klar, aber dafür
gibt es andere Wege... siehe Jahresangaben in Produktbezeichnungen...
2005.... 2007... etc.

Faktum ist eben, dass solche Angaben insbesondere "Copyright...." in Europa
absolut keinen Sinn ergeben, dabei möchte ich eine sinngemäße rechtliche
Würdigung dieses Begriffes mal völlig außen vor lassen. Dies daher am Ende
wirklich nur Marketing-Technische Gründe sind, die wie schon erwähnt, etwas
besser... für den Anwender markanter... eben durch eine entsprechende Angabe
in der Produktbezeichnung/Name zu bewerkstelligen wäre.

Tja... und wenn es nun unbedingt auf eine aktuelle Jahreszahl ankommt...
hilt eine kleine Methode die einfach den Jahreswechsel ermittelt und dies
dann automatisch korrigiert *lach*... wenn's geht so um die Weihnachtszeit,
da es niemand glaubt, dass zwischen den Jahren jemand arbeitet... und schon
hat man ein aktuelles... zeitgemäßes Produkt ;-)

Bis denne... Carl
Frank Dzaebel
2007-09-12 09:45:43 UTC
Permalink
Hallo Carl Christian,
Post by Carl Christian Schaffert
Ups.. das ging eben daneben...sorry...
no prob.
Post by Carl Christian Schaffert
Post by Frank Dzaebel
Unterschätze das Jahresdatum in Copyrights und von
Applikationen generell nicht ...
dass Marketing-Aspekte zu berücksichtigen sind, das ist klar, aber dafür
gibt es andere Wege... siehe Jahresangaben in Produktbezeichnungen...
2005.... 2007... etc.
Ja, allerdings auch in Produktbezeichnungen auch höchst kritisch.
IMHO auch der Hauptgrund für Pseudo-Namen von Produktbezeichnungen
wie ORCAS etc..
Ich sehe auch den Aspekt, dass Kunden bisher daran gewöhnt sind,
diese Informationen im Copyright zu lesen. Standard in
allen VS-Projekten und samt ORCAS, es wird also auch
weiter so bleiben, wenn nicht explizit vom Entwickler angepasst.
Der Kunde selber kennt da nicht immer die rechtlichen
Hintergründe.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Carl Christian Schaffert
2007-09-12 10:11:35 UTC
Permalink
Hallo Frank,
Post by Frank Dzaebel
Ja, allerdings auch in Produktbezeichnungen auch höchst kritisch.
IMHO auch der Hauptgrund für Pseudo-Namen von Produktbezeichnungen
wie ORCAS etc..
Hmmm... das sehe ich etwas anders, denn der Hauptgrund für Produktnamen,
dies trifft bei MS in besonderem Maße zu, ist ja u.a. gerade das
Marketing... ORCAS = VS2008... sämtliche Produkte in ORCAS/VS2008 haben
mittlerweile die Jahresangabe 2008 in ihren Produktbezeichnungen. Viele der
größeren (und kleineren) Softwarehäuser sind ja dazu übergegangen eine
Jahreszahl in ihren Produktnamen einzuführen... was sogar irgendwo Sinn
macht, insbesondere aus Marketing-Sicht macht es Sinn!

Dieses Thema ist sehr umfangreich, sicherlich lässt es sich mehrere
Monate/Jahre darüber diskutieren, was wir hier nicht können :-(
Post by Frank Dzaebel
Der Kunde selber kennt da nicht immer die rechtlichen
Hintergründe.
Und hier muss man sicherlich differenzieren... Kunden dies es wissen...
Kunden die es nicht wissen.... Kunden denen dies völlig egal ist (ob sie's
nun wissen oder nicht)...

Gruß Carl
Frank Dzaebel
2007-09-12 12:27:01 UTC
Permalink
Hallo,
Post by Carl Christian Schaffert
Post by Frank Dzaebel
Ja, allerdings auch in Produktbezeichnungen auch höchst kritisch.
IMHO auch der Hauptgrund für Pseudo-Namen von Produktbezeichnungen
wie ORCAS etc..
Hmmm... das sehe ich etwas anders, denn der Hauptgrund für Produktnamen,
dies trifft bei MS in besonderem Maße zu, ist ja u.a. gerade das
Marketing... ORCAS = VS2008...
Beachte! ORCAS ist erst seit einer gewissen Zeit VS2008,
vorher eben nur ein Codename! Das ist gerade das, was wichtig ist.
Ich kann nur jeder Firma raten, es genauso wie Microsoft zu machen.
Mit Codename kannst Du später den Produktnamen
ggf. auf das Jahr anpassen, das relevant erscheint. (und
zwar genau dann, wenn absehbar ist, dass die Entwickler es bis
dahin auch schaffen)
Man hat als Firma sonst ggf. erheblichen Einbussen zu rechnen,
wenn Produkte z.B. nicht in dem Jahr erscheinen, in dem
der anvisierte [Produkt Jahresname] steht. Alle erwarten
die neue Version, die alte wird nicht mehr gekauft.
Ein typischer Marketing-Fehler.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Lars-Iver Kruse
2007-09-12 12:46:18 UTC
Permalink
Hallo Frank,
Post by Frank Dzaebel
Man hat als Firma sonst ggf. erheblichen Einbussen zu rechnen,
wenn Produkte z.B. nicht in dem Jahr erscheinen, in dem
der anvisierte [Produkt Jahresname] steht. Alle erwarten
die neue Version, die alte wird nicht mehr gekauft.
Ein typischer Marketing-Fehler.
nicht nur in dem Jahr, das im Produktnamen steht, sondern besser noch im
zweiten Halbjahr des vorhergehenden muß das Produkt erscheinen! Siehe z.B.
die gerade erschienenen Symantec Produkte wie Norton Antivirus 2008.

Oder häufig gesehen auch bei moantlich erscheinenden Zeitschriften, wo der
in der Ausgabennummer aufgeführte Monat nicht dem tatsächlichen entspricht:
Krasses Beispiel gerade gestern bei meinem kleinen Cousin gesehen, da lag
eine GameStar 10/2007, erschienen am 29.08.2007. Man rechnet wahrscheinlich
damit, daß Hefte des Wettbewerbs im Regal lieben bleiben, wenn darauf eine
9/2007 steht. Oder der gerade erschienene IKEA 2008 Katalog, gültig nur bis
August 2008, dann kommt der 2009er. :-)

Aber inzwischen sind wir weit von C# weg.

Du hast aber recht, Frank, wer 2008 ein Produkt "xyz 2007" heraus bringt,
beschneidet von vornherein die eigenen Abverkäufe.


Viele Grüße, Lars
--
lik consulting
http://www.lik.de
Frank Dzaebel
2007-09-12 13:36:26 UTC
Permalink
Hallo Lars-Iver,
Post by Lars-Iver Kruse
nicht nur in dem Jahr, das im Produktnamen steht, sondern besser noch im
zweiten Halbjahr des vorhergehenden muß das Produkt erscheinen! Siehe z.B.
die gerade erschienenen Symantec Produkte wie Norton Antivirus 2008.
[...]
Du hast aber recht, Frank, wer 2008 ein Produkt "xyz 2007" heraus bringt,
beschneidet von vornherein die eigenen Abverkäufe.
ACK.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Thomas Scheidegger [MVP]
2007-09-12 13:34:45 UTC
Permalink
Hallo Lars
Post by Lars-Iver Kruse
nicht nur in dem Jahr, das im Produktnamen steht, sondern besser noch im
zweiten Halbjahr des vorhergehenden muß das Produkt erscheinen!
die Microsoft Produkte-Jahreszahlen richten sich zB
angeblich nach dem Microsoft-Fiskaljahr, welches schon im Juli beginnt (aktuell also schon FY08).
--
Thomas Scheidegger - MVP .NET - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/
Carl Christian Schaffert
2007-09-12 15:36:29 UTC
Permalink
Hallo Frank,
Post by Frank Dzaebel
Beachte! ORCAS ist erst seit einer gewissen Zeit VS2008,
vorher eben nur ein Codename! Das ist gerade das, was wichtig ist.
Ich kann nur jeder Firma raten, es genauso wie Microsoft zu machen.
Mit Codename kannst Du später den Produktnamen
ggf. auf das Jahr anpassen, das relevant erscheint. (und
zwar genau dann, wenn absehbar ist, dass die Entwickler es bis
dahin auch schaffen)
Man hat als Firma sonst ggf. erheblichen Einbussen zu rechnen,
wenn Produkte z.B. nicht in dem Jahr erscheinen, in dem
der anvisierte [Produkt Jahresname] steht. Alle erwarten
die neue Version, die alte wird nicht mehr gekauft.
Ein typischer Marketing-Fehler.
Dem kann ich nur zustimmen... denn dazu könnte ich ein Liedchen singen!


Gruß Carl
Carl Christian Schaffert
2007-09-12 09:45:55 UTC
Permalink
Noch ne Bemerkung...

die Angaben einer Jahreszahl im Copyright-Vermerk beziehen sich
üblicherweise auf die Entstehung (Start/Ende) eines Produktes/Sache (was
inzwischen, wie schon erwähnt, seit 1998 überholt ist) und nicht darauf wann
eine Exe kompiliert wurde... und schon gar nicht über die Dauer eines
Copyrights... somit ist das Datum im PE-Header oder was im Assembly steht eh
nicht ausschlaggebend und man kann dies ermitteln wie man will... je nach
Gusto ;-)... Programmierer sind ja kreativ und erfinderisch ;-)

Gruß Carl
Herfried K. Wagner [MVP]
2007-09-12 16:17:38 UTC
Permalink
Post by Carl Christian Schaffert
Ob etwas geschützt ist, richtet sich ausschließlich nach den jeweiligen
geltenden Gesetzen. Bei uns erlöschen Urheberrechte eh nie und im
angloamerikanischen Rechtssystem seit 1998 auch nicht... (womit sich
übrigens die Angabe einer Jahreszahl erübrigt hat)
Wie gelangst Du zu Dieser Auffassung? § 64 UrhG sagt doch "Das Urheberrecht
erlischt siebzig Jahre nach dem Tode des Urhebers"
(<URL:http://bundesrecht.juris.de/urhg/__64.html>). Die Angabe der
Jahreszahl ist aber in der Tat nicht notwendig, da sich m.W. zumindest gemäß
Deutschem UrhG die Schutzdauer nicht nach dem Zeitraum der Entstehung des
Werkes richtet.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Carl Christian Schaffert
2007-09-12 17:00:58 UTC
Permalink
Hallo Herfried,
Post by Herfried K. Wagner [MVP]
Wie gelangst Du zu Dieser Auffassung? § 64 UrhG sagt doch "Das
Urheberrecht erlischt siebzig Jahre nach dem Tode des Urhebers"
(<URL:http://bundesrecht.juris.de/urhg/__64.html>).
Da hast du Recht... dies wurde von mir etwas irreführend (Nimmerleinstag)
ausgedrückt, besser wäre gewesen Lebenszeit + 70 Jahre!
Post by Herfried K. Wagner [MVP]
Die Angabe der Jahreszahl ist aber in der Tat nicht notwendig, da sich
m.W. zumindest gemäß Deutschem UrhG die Schutzdauer nicht nach dem
Zeitraum der Entstehung des Werkes richtet.
Die Jahreszahl war auch nur im angloamerikanischen Rechtssystem notwendig.
Hinsichtlich der Schutzdauer gilt:

bis 70 Jahre nach dem Tode + den paar Jährchen die aus §64(Abs.2)
resultieren können.

Sicherlich wäre noch ne Menge mehr dazu zu sagen...

Gruß Carl
Frank Dzaebel
2007-09-12 17:16:16 UTC
Permalink
Post by Carl Christian Schaffert
Die Jahreszahl war auch nur im angloamerikanischen Rechtssystem notwendig.
bis 70 Jahre nach dem Tode + den paar Jährchen die aus §64(Abs.2)
resultieren können.
Die Jahreszahl im Copyright kann aus Marketing-Gründen, und
aus "Gewohnheits"-Gründen der Kunden ggf. notwendig sein,
nicht aus rechtlichen in unserem Lebensraum.


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Carl Christian Schaffert
2007-09-12 18:16:26 UTC
Permalink
Hallo Frank
Post by Frank Dzaebel
Die Jahreszahl im Copyright kann aus Marketing-Gründen, und
aus "Gewohnheits"-Gründen der Kunden ggf. notwendig sein,
nicht aus rechtlichen in unserem Lebensraum.
Klar, wir konnten es uns auch abgewöhnen mit Stöckchen Feuer zu machen
*smile*

Scherz bei Seite... der Begriff "Copyright" ist in unserem Rechtssystem ohne
Wert... dennoch hat dieser Begriff auf viele Menschen einen psychologischen
Effekt, dass dazu Jahresangaben (sofern sie gemacht werden) so aktuell als
Möglich sein sollten, erhöht diesen Effekt nur... sieht halt besser aus,
wenn da steht 2001 - 2007 als 1546 - 1551.. .erweckt doch sofort den
Eindruck als wäre es "neuer" oder? *grins*

bis denne... Carl
Lesen Sie weiter auf narkive:
Loading...