2012-05-14 14 views
6

Necesito un proceso con privilegios de administrador. Desde this preguntas y respuestas, parece que no hay mejor manera que iniciar un proceso por separado. Ya que preferiría tener un proceso dedicado a eso en lugar de simplemente lanzar mi aplicación original en un segundo proceso solo para este método, pensé que simplemente crearía dos proyectos en una sola solución en VS2010. Sin embargo, al intentar implementarlo, parece que solo puedo publicar uno de ellos a la vez. Eso no funcionaría, porque no quiero que un cliente tenga que instalar más de uno, y luego también estaría el problema de averiguar las rutas relativas, etc.¿Cómo publico múltiples aplicaciones/procesos con un solo clic?

No quiero ambos procesos como aplicaciones de inicio. Quiero que una sea la aplicación de inicio, que llama (si es necesario) la segunda para un solo método.

Entonces, ¿qué tengo dos procesos con una instalación de ClickOnce?

Respuesta

10

necesita para hacer referencia al segundo proyecto (trabajador) del primer proyecto (principal) - y luego, si va a las primeras propiedades del proyecto -> Publicar -> Archivos de aplicación, debería ver el segundo EXE como dependencia . De lo contrario, simplemente configure el menú desplegable "Publicar estado" en "Incluir".

también - No estoy seguro de cuál es su objetivo, pero eche un vistazo a mi publicación aquí: Forced the application to have the administrator privileges - problema muy similar al llamar a una aplicación con privilegios de administrador de la aplicación ClickOnce. Podría ahorrarte unos minutos.

+0

Gracias. Eso parece haberlo hecho. – ispiro

+0

¿Esto crea dos iconos de escritorio? –

+0

@ZacharyCanann no, solo uno. – avs099

3

Si no desea que el usuario instale más de una de las aplicaciones, entonces usted no desea tener varias implementaciones de ClickOnce. Lo que realmente quieres es una implementación. Por lo tanto, la aplicación ClickOnce debe ser su aplicación principal, y debe incluir el exe de la aplicación secundaria en la implementación de ClickOnce. Haría esto:

Agregue una copia del exe al proyecto ClickOnce, establezca la acción de compilación en 'contenido' y copie a directorio de salida en 'copiar siempre'. Luego haga una compilación y verifique el cuadro de diálogo Archivos de la aplicación en las propiedades de publicación y asegúrese de que aparezca.

Ahora, si se puede construir la solución y se acumula ambos proyectos, asegúrese de que está construyendo el proyecto que crea el exe primero. A continuación, agregue un comando de creación posterior al proyecto ClickOnce que lo copiará desde el directorio de salida del primer proyecto al directorio de salida del segundo proyecto.

Lo que sucederá es que construirá el primer proyecto, luego construirá el proyecto C/O (y copiará la versión del proyecto ClickOnce del exe en el directorio de salida), y ENTONCES copiará la versión más reciente del exe del otro proyecto en el directorio de salida del proyecto ClickOnce, y luego creará la implementación.

No soy un experto msbuild, pero el comando posterior a la generación sería algo como esto.

copiar/Y "$ (projectdir) .... \ otherproject \ bin \ Release \ mynew.exe" "$ TargetDir) \ mynew.exe"

Esto copia del proyecto actual, un aumento de dos niveles , el otro proyecto, luego la carpeta bin, luego suelte + mynew.exe, al directorio de salida de compilación. No voy a tener la estructura de directorio exactamente correcta para el otro proyecto; tendrás que configurarlo tú mismo. Pero esto te da la idea general.

+0

Gracias. Eso parece prometedor. – ispiro

Cuestiones relacionadas