Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Applikation mit ClickOnce - Micosoft.Sqlserver.Dmf.DLL soll instaliert werden
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 413
Herkunft: Germany

Themenstarter:

Applikation mit ClickOnce - Micosoft.Sqlserver.Dmf.DLL soll instaliert werden

beantworten | zitieren | melden

Hallo, ich habe eine Applikation die per ClickOnce verteilt wird. Jetzt habe ich eine neue Version erstellt, unter anderem mit einem neuen Zertifikat. Jetzt wollte ich diese Applikation auf einem rechner installieren, wo schon eine Vorgängerversion installiert war.
Jetzt bemängelt der Clinet, das die DLL nicht im GAC installiert werden soll. Kann das über ClickOnce gar nicht gemacht werden?
Wie kann ich das denn sosnt machen? Die Clients haben alle Adminrechte bei dem angemeldeten User. Könnte ich das per Code realisieren oder wie kann ich das automatisiert tun?
private Nachricht | Beiträge des Benutzers
Mr. Bart Simpson
myCSharp.de - Member

Avatar #avatar-3273.gif


Dabei seit:
Beiträge: 502
Herkunft: Mittelfranken

beantworten | zitieren | melden

Eine DLL im GAC zu registrieren geht meines Wissens nach nicht per ClickOnce (ich lass mich aber gerne korrigieren - wär interessant zu wissen...). Per Code ging es vermutlich - aber wozu? Warum verteilst Du sie nicht einfach mit (im Zweifelsfall explizit als "Einschließen" bzw. "Erforderlich" unter den Einstellungen für die Anwendungsdateien eintragen)?

Bart Simpson
Praxis ist wenn alles funktioniert und keiner weiss warum.
Theorie ist wenn man alles weiss, aber nichts funktioniert.

Bei uns wird Theorie und Praxis vereint: Nichts funktioniert und keiner weiss warum...
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16236

beantworten | zitieren | melden

Das geht in ClickOnce über ein prerequisite Package, also einem Manifest.
Zur Not die DLL über den CMD-Weg registrieren. Gedacht ist das in ClickOnce aber eigentlich nicht...
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 413
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Zitat von Mr. Bart Simpson
Eine DLL im GAC zu registrieren geht meines Wissens nach nicht per ClickOnce (ich lass mich aber gerne korrigieren - wär interessant zu wissen...). Per Code ging es vermutlich - aber wozu? Warum verteilst Du sie nicht einfach mit (im Zweifelsfall explizit als "Einschließen" bzw. "Erforderlich" unter den Einstellungen für die Anwendungsdateien eintragen)?

Bart Simpson
Hallo Bart, das mach ich ja. Habe die DLL's eingebunden ([Einschließen]), aber der Client sagt das diese DLL im GAC eingefügt werden muss. Er kann die Anwendung nicht installieren.
Komisch ist daran, das diese Anwendung in einer vorfigen Version funktioniert hatte, da wurde diese DLL auch gebraucht. Was ist nun anders:
- Ich habe das Zertifikat 5 Jahre verlängert
- Jetzt verwende ich VS2013, davor VS2012
Zitat von Abt
Das geht in ClickOnce über ein prerequisite Package, also einem Manifest.
Zur Not die DLL über den CMD-Weg registrieren. Gedacht ist das in ClickOnce aber eigentlich nicht...
Ja, das steht so auch bei Galileo Computing (Rheinwerk), das solche DLL's nicht über ClickOnce in den GAC installiert werden können.
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 413
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Mein Problem ist eben, das ich an allen Rechnern persönlich vorbei muss und das Zeug installieren.
Mit GACUTIL.EXE /i xxxxx.DLL geht das ja. Habe das Gerade mal mit einer DLL an einem Client per TeamViewer getestet.
So, jetzt muss ich aber ca. 10 DLL's für den Sqlumfang an allen clients installieren. Das hatte ich wohl in der vorigen Ur-Version der Applikation schon mal gemacht.
Ab dieser version habe ich aber ein anderes Zertifikat, weil das alte abgelaufen war. Somit sind für diese Applikation (Anwendung) die DLL's nicht registriert, so vermute ich das mal. Jetzt muss ich die alle wieder manuell mit GACUTIL registrieren. Kann ich das nicht auch in den Code einbauen und abfragen ob die DLL's vorhanden sind? Dann wäre das evtl. immer eine einmalige Sache und geht per Code.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16236

beantworten | zitieren | melden

Wo ist das Problem, dass Du die DLL über ein Prerequisite zuerst auslieferst und via CMD.Exe (Required Packages) direkt aus dem Package installierst?
Add your own (custom) prerequisite to "ClickOnce" application damit sollte es gehen.

Ansonsten wie es Rheinwerk bzw. ClickOnce selbst empfiehlt: auf das Registrieren verzichten und die DLL als Direktverweis im Projekt nutzen.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 413
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Wo ist das Problem, dass Du die DLL über ein Prerequisite zuerst auslieferst und via CMD.Exe (Required Packages) direkt aus dem Package installierst?
Add your own (custom) prerequisite to "ClickOnce" application damit sollte es gehen.

Ansonsten wie es Rheinwerk bzw. ClickOnce selbst empfiehlt: auf das Registrieren verzichten und die DLL als Direktverweis im Projekt nutzen.

Hallo Abt, danke für die Info. Der Link geht bei mir ins Nirvana. Ich habe nochmals bei Rheinwerk nachgelesen. Ich habe diese DLL's die ich für den SqlServer brauche eingebunden (bei Anwendungsdateien ==> Veröffentlichungsstatus ==> Einschließen)
Hier ein paar DLL's:
Microsoft.SqlServer.Dmf.dll
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.Management.SmoMetadataProvider.dll
.
.
.

So funktioniert das halt nicht, wenn ich Setup.exe starte bekomme ich die Meldung: Fügen sie im GAC die xxxxxx.DLL ein. Fragen sie dazu ihren Admin.

Wie soll ich das nun mit dem Bootstrapper machen? Kann ich die Dateien auch per Hand beim Bootstrapper einfügen? Und wie stoße ich dann die Installation an? Automatisch aus meinem Code, oder macht das ClickOnce dann selber?
Wenn man z.B. die Applikation veröffentlicht und man setzt FW 4.5 voraus, dann muss ClickOnce das ja auch installieren können und zur Verfügung bestellt bekommen. Da habe ich auch schon die *.exe für das FrameWork in dem Bootstrapper-Ordner einstellen müssen, weil es nicht vorhanden war.
Müßte man das in diesem Fall mit den DLL's genauso machen? Da muss aber dann noch ein Ordner bereitgestellt werden, wo die DLL's abgelegt werden, oder? Da kann man bei Anwendungsdateien ==> Downloadgruppe ==> NEU auswählen, hat das evtl damit was zu tun?
Wäre um jeden Tipp dankbar, da ich schon den ganzen Tag an dem Problem hänge.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16236

beantworten | zitieren | melden

Ja gut. Ohne Adminrechte hast Du ohnehin keine Rechte etwas im GAC abzulegen.
Dahingehend ist das ein K.O. für die Anforderung.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Palin
myCSharp.de - Member



Dabei seit:
Beiträge: 1115

beantworten | zitieren | melden

Grundlegend sollte es nicht nötig sein die DLL im CAG zu registrieren. Es sollte reichen wenn sie im Verzeichnis der Anwendung (bei der exe) liegt. Und da sollte sie ClickOncs auch sie auch hin kopieren / können.

Schau mal nach ob die DLL beim Client in dem Verzeichnis liegt (Passende Version und gegebenen falls Abhängigkeit. Und das von dir auch nur die Version Referenziert wir, nicht das du noch teile hast die die alte DLL irgendwo Referenzieren.

MFG
Björn
Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 413
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
Ja gut. Ohne Adminrechte hast Du ohnehin keine Rechte etwas im GAC abzulegen.
Dahingehend ist das ein K.O. für die Anforderung.

Hallo, die Clients haben Adminrechte, der User der angemeldet ist hat Adminrechte. Daran würde es erst mal nicht scheitern.
private Nachricht | Beiträge des Benutzers