Autor |
Beitrag |
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Di 04.09.12 23:32
Hey,
ich bin mal wieder mit C# unterwegs und hab ein Problem, bei dem ich nicht weiter komm und nicht wirklich was im Netz finde. Ein Programm was ich entwickelt hab, soll jetzt noch um ein paar Funktionen erweitert werden. Unter anderem muss ich dazu beim Setup ein paar Einträge in der Regitry anlegen. Die Frage ist: Wie mach ich das? Ich hab zwar schon haufen Sachen gefunden, wie man das mit nem Setup-Projekt in VS2010 machen kann, aber ich würde gern den mitgelieferte Setupassistenten der WPF Anwendung (den Webpublishing-Assistenten) nutzen, da die Anwendung jetz bereits mit diesem Setup im Internet publiziert wurde. Außerdem kann ich dort auch automatisch Updates für das Programm einpflegen und beim Setup die benötigten Programme prüfen und installieren lassen. Was ich leider nicht gefunden hab ist, wie man dem Assistenten sagt, das er Registry Einträge anlegen soll :/ Wie genau mach ich das? Oder geht das nicht mit dem Assistenen und ich muss mir doch ein Setup-Projekt bauen?
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
HeftCD
      
Beiträge: 91
Erhaltene Danke: 9
Win2k, WinXP, Win7, Win8
Delphi 3 Pro, Delphi 5, Delphi 7, Turbo Delphi, BC1
|
Verfasst: Mi 05.09.12 07:53
mhh, leider kann ich Dir das nicht genau sagen, da ichmich mit c# und dem publushing Assitenten noch nicht auskenne.
Aber vielleicht wäre InnoSetup www.jrsoftware.org/isinfo.php mittels der IDE ISTool IsTool sourceforge.net/projects/istool/ etwas für Dich.
Vielleicht kannst Du damit auch auch ein selbstgeschriebnes Programm nach der Installation ausführen, daß in dem Verzeichnis den alten UN-Installer überschreibt löscht.
mh, wobei .. die Uninstaller-InfoDatei natürlich in Inno-eigener_logsprache geschrieben wird
Wenn Dein Programm nicht allzu komplex ist (eigentlich nur aus Exe und Hilfe, Startmenüeinträgen besteht könntest den Uninstaller umbenennen, Ein selbstgeschriebenes einsetzen und das sogar mit Interaktion gestalten und bei DEINSTLLATION fragen kannst, was wo angelegt war und ob er's löschen soll)
Evtl-. müßten Deine Kunden/Anwender einmailg das Programm mit dem alten cleaner deinstallieren und mit Inno neuinstallieren.
Aber dann haste's sauber.
mhh, klar.
Eigentlich sollte man schon bei nur 1 Installer-Programm bleiben.
Aber vielleicht schaust Du Dir das mal an.
für Deine nächsten Projekte.
Part aus nem Inno-Script:
Delphi-Quelltext 1: 2: 3:
| [Registry] Root: HKU; Subkey: Software; ValueType: string; ValueName: meinProgrammName; ValueData: 40F280743BD9D0; Flags: createvalueifdoesntexist uninsdeletekey Root: HKU; Subkey: Software; ValueType: binary; ValueName: blabla; ValueData: 1 |
|
|
jaenicke
      
Beiträge: 19321
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 05.09.12 08:19
Kurz gesagt: Das ist nicht möglich. ClickOnce kennt bietet eine solche Funktion nicht an.
Ich benutze meistens ohnehin einen Einrichtungsassistenten im Programm selbst beim ersten Start. Der übernimmt das dann und kann dafür ja ggf. auch Adminrechte anfordern.
HeftCD hat folgendes geschrieben : | Aber vielleicht wäre InnoSetup [..] etwas für Dich. |
Ich mag InnoSetup auch, aber für .NET Programme ist es schlecht geeignet. Da ist ClickOnce schon eine sehr gute Möglichkeit, schon weil es für den Nutzer sehr einfach ist.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mi 05.09.12 15:03
Hey,
@HeftCD: InnoSetup kenn ich, aber das gleiche machen auch die SetupProjekte die man mit VS erstellen kann. Aber wie schon gesagt würde ich gern bei dem jetzigen Setup bleiben.
@jaenicke: Daran hab ich zuerst auch gedacht und hab dann versucht das umzusetzen. Um die Admin-Rechte für das Programm zu bekommen, hab ich mich an diesem Artikel orientiert. Das hat aber nicht funktioniert. Wenn ich das ganze mit dem Debugger gestartet habe, dann hatte er zwar AdminRechte, aber beim schreiben in die Registry hab ich trotzdem ne Exception bekommen. Weiß nich mehr genau wie die hieß, aber sie meinte dass das Programm nicht autorisiert wäre dort su schreiben. Wenn ich das Programm normal über die Exe gestartet habe, dann hatte er immer Admin-Rechte ist aber wärend des Starts abgestürtzt. Immer Admin-REchte zu haben, obwohl man keine benötigt ist auch nicht wirklich ratsam :/ Wie genau machst du das bei deinen Projekten?
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: So 09.09.12 15:37
Hey,
hat keiner ne Idee? Ich bräuchte nur nen kleinen Denkanstoß, den Rest kann ich mir sicher im Netz zusammensuchen. Zur Zeit weiß ich nicht genau wonach ich noch suchen soll :/
*push*
€: Habs gelöst. Man brauch nich nur Adminrechte, sondern muss dem Key auch sagen das man Werte schreiben will :/
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| private bool IsUserAdministrator() { bool isAdmin; try { WindowsIdentity user = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(user); isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator); } catch (UnauthorizedAccessException) { isAdmin = false; } catch (Exception) { isAdmin = false; } return isAdmin; }
Process.Start(new ProcessStartInfo() { Verb = "runas", FileName = filepath });
key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", RegistryKeyPermissionCheck.ReadWriteSubTree); key.SetValue("Fragenkatalog", filepath); |
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
|