Cómo para seleccionar «Ejecutar como administrador» en un archivo con Inno Setup

Estoy creando un instalador uso de Inno Setup. Como parte del proceso de instalación soy la instalación de Tomcat. En Windows 7 que sufren el problema que se describe aquí:

http://blog.paulbouwer.com/2010/10/23/the-case-of-the-annoying-tomcat-6-monitor/

Me puede solucionar mediante la configuración manual de la ‘Ejecutar como administrador’ en tomcat7w.exe (el problema y la causa raíz es la misma para tomcat7 así), pero no sé cómo hacerlo a través de Inno Setup.

Me estoy encontrando hilos que explican ejecución some_program.exe como administrador, pero aquí el programa se inicia cuando el Tomcat se inicia el servicio (por ejemplo, en el arranque de la máquina), así que necesito una manera de señalar el uso de Inno Setup ‘Ejecutar como administrador’ en lugar de ejecutarlo.

Usted puede agregar la entrada del Registro en [Registry] Sección en la que se establece para que se ejecute como Administrador como acción predeterminada para runnint esta aplicación. por ejemplo, Root: "HKLM"; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; ValueType: String; ValueName: "{app}\tomcat7w.exe"; ValueData: "RUNASADMIN"; Flags: uninsdeletekeyifempty uninsdeletevalue; MinVersion: 0,6.1
posibles duplicados de Cómo crear un acceso directo para iniciar una Aplicación con privilegios de administrador desde el cmd-line?
Funcionó a la perfección, muchas gracias. Ahora veo que debería haber publicado esta pregunta el horario de vuelta :). Si lo desea, publicar el comentario como una respuesta para que yo pueda aceptar. Gracias de nuevo
O usted podría buscar la respuesta 😉 Los enlaces duplicados might find.
Ermm, aplicación de compatibilidad no debe entrar en juego para los servicios. Se ejecuta como cualquier usuario pueden configurarse para que, normalmente de administración o en el local de la máquina.

OriginalEl autor learnAndImprove | 2013-06-07

3 Kommentare

  1. 14

    Usted puede agregar una entrada del Registro en [Registry] Sección en la que se establece run as Administrator como una acción predeterminada para el funcionamiento de esta aplicación.

    Ejemplo:

    Root: "HKLM"; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; \
        ValueType: String; ValueName: "{app}\tomcat7w.exe"; ValueData: "RUNASADMIN"; \
        Flags: uninsdeletekeyifempty uninsdeletevalue; MinVersion: 0,6.1
    
    Configuración de compatibilidad son una curita, no una solución adecuada. La solución adecuada en este caso es, probablemente, a que se ejecute como un servicio mediante credenciales de administrador en el primer lugar.
    Raíz: «HKCU» trabajó para mí.

    OriginalEl autor RobeN

  2. 11

    Si usted realmente desea establecer la «Ejecutar como administrador» bandera de el acceso directo (como opuesto a forzar el objetivo de la aplicación se ejecute con privilegios de administrador), puede utilizar este código:

    [Icons]
    Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"; \
      AfterInstall: SetElevationBit('{userdesktop}\My Program.lnk')
    [Code]
    
    procedure SetElevationBit(Filename: string);
    var
      Buffer: string;
      Stream: TStream;
    begin
      Filename := ExpandConstant(Filename);
      Log('Setting elevation bit for ' + Filename);
    
      Stream := TFileStream.Create(FileName, fmOpenReadWrite);
      try
        Stream.Seek(21, soFromBeginning);
        SetLength(Buffer, 1);
        Stream.ReadBuffer(Buffer, 1);
        Buffer[1] := Chr(Ord(Buffer[1]) or $20);
        Stream.Seek(-1, soFromCurrent);
        Stream.WriteBuffer(Buffer, 1);
      finally
        Stream.Free;
      end;
    end;

    Esto se basa en:


    Probado en la versión Unicode de Inno Setup. Pero debe, incluso de forma más natural, trabajar en la versión Ansi también, aunque no se debe utilizar la versión Unicode de todos modos.


    Si desea permitir al usuario ejecutar el programa al final de la instalación con un postinstall entrada en [Run] sección, por supuesto necesitará para solicitar explícitamente la elevación.

    Si el instalador se ejecuta con privilegios de Administrador, usted puede simplemente añadir runascurrentuser bandera:

    [Run]
    Filename: "{app}\MyProg.exe"; Description: "Launch application"; \
        Flags: postinstall nowait skipifsilent runascurrentuser 
    

    Si el instalador se ejecuta sin privilegios de Administrador, establecer Verbo parámetro a runas (para que también se necesita shellexec bandera):

    [Run]
    Filename: "{app}\MyProg.exe"; Verb: runas; Description: "Launch application"; \
        Flags: postinstall nowait skipifsilent shellexec
    

    Aunque, asegúrese de que usted tiene una muy buena razón para ejecutar la aplicación con privilegios de Administrador. Las aplicaciones de usuario no necesita privilegios de Administrador. Si lo necesitan, es generalmente un signo de un mal diseño. Uno común (malas) razones para querer que una aplicación se ejecute con privilegios de Administrador, es que la aplicación necesita para escribir en su carpeta de instalación.

    Ver La aplicación no funciona cuando se instala con Inno Setup

    Para Inno Desarrolladores: Si el postinstall entrada en la sección [Run] es en realidad otro Inno Setup ejecutable, definir un indicador para capturar el código de retorno de el (en su defecto) proceso hijo con opción a X y a la.código de retorno de los padres de instalar.
    ¿Por qué publicar una solicitud de función aquí? Publicar en Inno Setup sitio.
    Sí, claro. Debe ser XOR de todos modos. Una solución para el progreso, here.

    OriginalEl autor Martin Prikryl

  3. 1

    Agregar el runascurrentuser indicador de atributo para el [Run] sección

    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: runascurrentuser nowait postinstall skipifsilent; 
    
    Va a lanzar el ejecutable como administrador correctamente al final de la instalación, pero no hacer que el escritorio de accesos directos de la ejecutarlo como administrador.

    OriginalEl autor Mehdi Benkirane

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea