WinFuture-Forum.de: Programm Das .net Framework Erkennt Ohne .net Framework - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Programm Das .net Framework Erkennt Ohne .net Framework C#, .NET Framework 1.1


#1 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 12. Dezember 2005 - 13:10

Hallo,

mein Problem ist folgendes:

Ich vertreibe diverse .Net 1.1 basierende Software aber wie es die Erfahrung zeigt haben wenige User dieses mit SP1 etc auch installiert...

Und da mein Kundenspektrum nicht in der Lage ist dies selber zu installieren möchste ich dies nach möglichkeit übernehmen.

Nur kann ich nicht ein .NET Programm schreiben das erkennt welche .NET Komponenten installiert sind und fehlende nachschiebt...

meine Frage ist jetzt ob mir da jemand weiter helfen kann...

Einen Installer für ASP Software zu benutzen ist nicht mein Ziel und würde die Kunden überfordern...
0

Anzeige



#2 Mitglied ist offline   Source82 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 12. Dezember 05
  • Reputation: 0

geschrieben 12. Dezember 2005 - 13:34

Hi!

Eine Möglichkeit ist ein .NET Funktion aus der mscoree.dll aufzurufen.
Da diese eine .NET Dll ist, kannst du so gleich mal feststellen, ob .NET
überhaupt installiert ist. Wenn also vorhanden (system32), dann gibt
es da folgende Funktion zum Aufruf:

HRESULT GetCORVersion(
LPWSTR pbuffer,
DWORD cchBuffer,
DWORD* dwlength
);

Die andere geht über die Registry.
Schau mal hier:
http://support.micro...kb/315291/en-us

Gruß
Source
0

#3 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 12. Dezember 2005 - 13:38

Danke, das ist eine gute Idee....
Nur kann ich ja kein Programm schreiben um das zu checken da ich davon ausgehe das das .NET Framework noch nicht installiert ist...

Kann mir da jemand etwas Programmcode für ein Native C++ Projekt
mitteilen das diesen Reg-Key abfragt und dann entweder oder handelt?
(Einarbeitung ist kein Problem in Quellcode)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.1
0

#4 Mitglied ist offline   Source82 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 12. Dezember 05
  • Reputation: 0

geschrieben 12. Dezember 2005 - 14:01

Hi!

Verwendest du ein Setup-Programm wie NSIS?
Wenn ja, kann ich dir da fertigen Code geben:

Function GetDotNETVersion
  Push $0
  Push $1
 
  System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1"
  StrCmp $1 0 +2
	StrCpy $0 "not found"
 
  Pop $1
  Exch $0
FunctionEnd


Programm hab ich leider keines, aber in der MSDN findest da gute
Beispiele:

MSDN

Gruß
Source
0

#5 _MagicAndre1981_

  • Gruppe: Gäste

geschrieben 12. Dezember 2005 - 14:13

Schau mal hier : http://www.devage.co...tInstaller.html

Da gibts einen ordenrlichen Installer.

André
0

#6 Mitglied ist offline   DonElTomato 

  • Gruppe: aktive Mitglieder
  • Beiträge: 311
  • Beigetreten: 04. Oktober 05
  • Reputation: 0

geschrieben 12. Dezember 2005 - 14:41

Das sind alles gute Sachen aber das Problem ist das der Normal User nicht mal weiss was installieren ist und deshalb (weil Computerbild es sagt) alles zur Sicherheit schnell abbricht. Die beste Lösung ist ein Tool das ohne Fenster etc. erkennt ob das Framework installiert ist. Wenn JA dann Programm.exe ausführen wenn NEIN dotnetfx.exe ausführen....

Hab das schon mit ner Batch versucht aber das isses auch nicht wirklich. Aber schon fast nah dran...
0

#7 Mitglied ist offline   Skippy 

geschrieben 12. Dezember 2005 - 15:51

	DWORD dwSize = sizeof (DWORD);
	DWORD dwNetIsInstalled = 0;
	HKEY hKey = NULL;
	RegOpenKeyEx(HKEY_LOCAL_MACHINE,
					"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322",
					NULL,
					KEY_QUERY_VALUE,
					&hKey);
	RegQueryValueEx(hKey,
					"Install",
					NULL,
					NULL,
					(LPBYTE)&dwNetIsInstalled,
					&dwSize);
	RegCloseKey(hKey);

//dwNetIsInstalled = 0 bedeutet wohl Net.Framework ist nicht installiert

if(dwNetIsInstalled != 1)
{
//hier wurschtelst du deinen Code rein um Net.Framework zu installieren
//
//z.b. per Create CreateProcess()
}


informier dich einfach mal über die funktion CreateProcess()
damit kannst du den installer fürs framework starten ohne das du dich um was kümmern musst dein programm macht dann erst weiter wenn der installer fertig ist und du kannst auch kommandozeilenparameter übergeben: den für den installer gibt es einen silent parameter so das keine Benutzereingaben erforderlich sind
0

#8 Mitglied ist offline   LostGhost 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 18. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bremen
  • Interessen:Zocken, Programieren, Kino, Am Windows rumbasteln (nicht unbedingt in dieser Reihenfolge :-)

geschrieben 16. Dezember 2005 - 11:41

@DonElTomatoDonElTomato
In der Hilfe zur NSIS-installer ist bereits ein Code Beispiel der prüfft ob Net.Framework installiert ist oder nicht!
Wenn du willst kann ich dir Code für mein Programm schicken. Du brauchst es nur für deine Programm anzupassen.
LostGhost

Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0