2012-05-14 7 views
6

Ich brauche einen Prozess mit Administratorrechten. Von this Frage und Antworten scheint es, dass es keinen besseren Weg gibt, als einen separaten Prozess zu starten. Da ich lieber einen Prozess dafür hätte, anstatt nur meine ursprüngliche Anwendung in einem zweiten Prozess nur für diese eine Methode zu starten, dachte ich, ich würde einfach zwei Projekte in einer Lösung in VS2010 erstellen. Jedoch - wenn ich versuche, es zu implementieren - scheint es, dass ich nur einen von ihnen auf einmal veröffentlichen kann. Das würde nicht funktionieren, weil ich nicht möchte, dass ein Client mehr als einen installieren muss - und dann gibt es auch das Problem, die relativen Pfade usw. herauszufinden.Wie veröffentliche ich mehrere Anwendungen/Prozesse mit einer ClickOnce-Bereitstellung?

Ich möchte nicht beide Prozesse als Start-Anwendungen. Ich will, dass man die Startup-Anwendung ist, die (falls erforderlich) die zweite für nur eine Methode aufruft.

Also wie habe ich zwei Prozesse mit einem Klick installieren?

Antwort

10

Sie müssen zweiten (Worker) Projekt aus dem ersten (Haupt) Projekt verweisen - und dann, wenn Sie zu ersten Projekteigenschaften gehen -> Veröffentlichen -> Anwendungsdateien, sollten Sie zweite EXE als Abhängigkeit bereits sehen . Wenn nicht - setzen Sie einfach das Dropdown-Menü "Veröffentlichungsstatus" auf "Einschließen".

auch - Ich bin mir nicht sicher, was Ihr Ziel ist, aber werfen Sie einen Blick auf meine Post hier: Forced the application to have the administrator privileges - sehr ähnliches Problem mit dem Aufruf einer App mit Administratorrechten von ClickOnce App. Könnte dich ein paar Minuten sparen.

+0

Danke. Das scheint es getan zu haben. – ispiro

+0

Erstellt dies zwei Desktop-Symbole? –

+0

@ZacharyCanann nein, nur einer. – avs099

3

Wenn Sie nicht möchten, dass der Benutzer mehr als eine der Apps installiert, möchten Sie nicht mehrere ClickOnce-Bereitstellungen. Was Sie wirklich wollen, ist eine Bereitstellung. Die ClickOnce-App muss also Ihre Hauptanwendung sein, und Sie müssen die Exe von der sekundären App in die ClickOnce-Bereitstellung einschließen. Ich würde dies tun:

Fügen Sie eine Kopie der exe auf das Clickonce-Projekt, die Build-Aktion auf 'Inhalt' und Copy-to-Output-Verzeichnis 'Kopie immer'. Erstellen Sie dann ein Build und überprüfen Sie das Dialogfeld "Anwendungsdateien" in den Veröffentlichungseigenschaften und stellen Sie sicher, dass es angezeigt wird.

Wenn Sie nun die Lösung erstellen können und beide Projekte erstellen, stellen Sie sicher, dass das Projekt erstellt wird, das zuerst die EXE erstellt. Fügen Sie dann dem ClickOnce-Projekt einen Post-Build-Befehl hinzu, der es aus dem Ausgabeverzeichnis des ersten Projekts in das Ausgabeverzeichnis des zweiten Projekts kopiert.

Was passiert ist, wird es das erste Projekt erstellen, dann wird es das C/O-Projekt erstellen (und kopiert die ClickOnce-Projektversion der Exe in das Ausgabeverzeichnis), und DANN wird es die neueste Version des exe von dem anderen Projekt in das Ausgabeverzeichnis des ClickOnce-Projekts und erstellt dann die Bereitstellung.

Ich bin kein Msbuild-Experte, aber der Post-Build-Befehl wäre in etwa so.

COPY/Y "$ (ProjectDir) .... \ otherproject \ bin \ release \ mynew.exe" "$ TargetDir) \ mynew.exe"

Diese Kopien aus dem aktuellen Projekt, auf zwei Ebenen , das andere Projekt, dann der Ordner bin, dann release + mynew.exe, um das Build-Ausgabeverzeichnis. Ich werde nicht die Verzeichnisstruktur genau zu dem anderen Projekt haben - Sie müssen das selbst einstellen. Aber das gibt Ihnen die allgemeine Idee.

+0

Danke. Das sieht vielversprechend aus. – ispiro