domingo, 17 de marzo de 2013

Trabajar con Componentes (Inno Setup)

Os pongo un pequeño tutorial para crear una instalación con componentes en Inno, puede ser útil para instalar por ejemplo un paquete de programas desatendidos.

Trabajaremos en base a una plantilla que creé hace tiempo para instalar un paquete de reproductores de vídeo.

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "DP-M-Pack"
#define MyAppVersion "1.0.0"


[Setup]

AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
CreateAppDir=no
ArchitecturesInstallIn64BitMode=x64 ia64
Uninstallable=no
OutputDir=setup.exe
OutputBaseFilename=setup
Compression=lzma2/ultra
SolidCompression=yes
;SetupIconFile=107.ico

[Languages]

Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Components]

Name: "codecs"; Description: "Codec de video para Windows 7/8 1.1.8.0"; Types: "custom"; MinVersion: 0.0,5.01;
Name: "codecs4"; Description: "Componentes de 64 bits 3.7.5.0 (para sistemas de 64 bits)"; Types: "custom"; Check: "IsWin64"; MinVersion: 0.0,5.01;
Name: "reproductor"; Description: "Reproductor Multimedia KMPlayer 3.3.0.33"; Types: "custom"; MinVersion: 0.0,5.01;
Name: "reproductor2"; Description: "Reproductor Media Player Classic Home Cinema 1.6.2.4902"; Types: "custom"; MinVersion: 0.0,5.01;
Name: "reproductor3"; Description: "Reproductor Media Player Classic Home Cinema 1.6.2.4902 x64"; Types: "custom"; Check: "IsWin64"; MinVersion: 0.0,5.01;


[Files]

Source: "win8codecs.exe"; DestDir: "{tmp}"; Components: "codecs"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 32bit
Source: "x64Components.exe"; DestDir: "{tmp}"; Components: "codecs4"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit
Source: "KMPlayer3.3.0.33.exe"; DestDir: "{tmp}"; Components: "reproductor"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 32bit
Source: "MPC-HC.1.6.2.4902.x86.exe"; DestDir: "{tmp}"; Components: "reproductor2"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 32bit
Source: "MPC-HC.1.6.2.4902.x64.exe"; DestDir: "{tmp}"; Components: "reproductor3"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit


[Run]

Filename: "{tmp}\win8codecs.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Codec de video para Windows ..."; Components: "codecs"; MinVersion: 0.0,5.01;
Filename: "{tmp}\x64Components.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Componentes de 64 bits ..."; Components: "codecs4"; MinVersion: 0.0,5.01;
Filename: "{tmp}\KMPlayer3.3.0.33.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Reproductor ..."; Components: "reproductor"; MinVersion: 0.0,5.01;
Filename: "{tmp}\MPC-HC.1.6.2.4902.x86.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Reproductor ..."; Components: "reproductor2"; MinVersion: 0.0,5.01;
Filename: "{tmp}\MPC-HC.1.6.2.4902.x64.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Reproductor ..."; Components: "reproductor3"; MinVersion: 0.0,5.01;


[Types]

Name: "custom"; Description: "Elegir elemetos"; Flags: iscustom; MinVersion: 0.0,5.01;

[Messages]

BeveledLabel=Pack por Area 51, 2012




El comando /verysilent le indica al programa a instalar que lo haga sin intervención del usuario, cada instalador tiene sus propios comandos el /verysilent es para instalaciones compiladas con Inno Setup, para InstallShield o Wise el parametro es diferente.


El comando check: IsWin64 indica que los componentes solo aparecen en S.O de 64 bits


En S.O de 64:



En S.O de 32 (como veis los componentes de 64 no aparecen)




33 comentarios :

  1. hola como estas amigo y como hago para que funcione con mis programas

    ResponderEliminar
    Respuestas
    1. Hola, este en un ejemplo, luego tú en base a este ejemplo puedes crear las instalaciones de tus programas.

      Eliminar
  2. Gracias hermano, me estoy instruyendo con tus concejos, todos tus tutoriales me han ayudado mucho, me gusta hacer repack's pero me cuesta un poco la programación, mas si no ay nadie a quien preguntar. Ideas... varias pero de allí a llevarlas a cabo me falta mucho, son buenos trabajos los de Black Box, siempre innovando me gustaría poder hacer algo parecido, pero original no una copia de BB, estaré atento a tus aportes , por sierto no me explicas como puedo hacer para poner varios sonidos a la instalación?, mi idea seria que para cada paso de la instalación halla una voz de alguien que indique los pasos a seguir o informe de algo, no encuentro ninguno tutorial que lo explique los que preguntan y obtienen respuestas no las publican, como si fuera secreto de estado.
    Abraso

    ResponderEliminar
  3. Hola, me alegro que hayas aprendido a través del blog, es cierto lo que dices, mucha gente guarda los conocimientos como secreto de estado y no entiendo el porqué mi filosofia es que todo lo que voy aprendiendo lo voy compartiendo para que la demás gente aprenda y comparta. En cuanto a lo de sonidos de instalación se ponerle música pero no lo que pides, me informare al respecto y si me entero de algo como siempre lo compartiré.
    Un saludo.

    ResponderEliminar
  4. Gracias, y sabes como ponerle música e imágenes? e visto cantidades de videos de gente explicando... pero del script nada. Con suerte logre copiar parte de lo que muestran en el video (a ojo) pero me faltan cosas porque me sale el error de duplicado. Tu sabes como lograr esto?

    ResponderEliminar
    Respuestas
    1. Para evitar algunos errores de duplicado es mejor un script aparte y usar la opción "include" en el principal además necesitas algunos DLL adicionales,Te pongo el enlace del script que uso yo, tiene para imágenes en slideshow, música e imagen splash, incluye el isdone 0.6, tiene ya los dll necesarios y viene todo bastante bastante bien explicado, míralo detenidamente a ver si te ayuda.

      http://www.mediafire.com/download/d9czlwnkxgkmd0r/innofusion.7z

      Luego te pongo un par de script mas para que vayas mirándolos:


      http://www.mediafire.com/download/7b5nobot6v3qaps/Need_for_Speed%E2%84%A2_Undercover_%5B2.4c%5D.7z

      http://www.mediafire.com/download/4s74n4vmbrivhqi/Xenus2_botva2_traducido.7z

      Eliminar
  5. Uh! ahora si me va quedando claro varias cosas que antes ni idea. Es una muy buena base!
    Gracias hermano.

    ResponderEliminar
  6. pero explica donde se guarda el script

    ResponderEliminar
  7. puse a escojer entre el ner8 y elcohol120% pero no sale nada por que?

    ResponderEliminar
  8. El script lo guardas donde tu quieras. Pon tu script por aquí a ver cual es el fallo para que no te salga nada.

    ResponderEliminar
  9. bueno solucionado pero ahora yo pestañeo lo que no quiero instalar pero sigue instalando..
    hice un repack de prueba de nes, snes, neorage y N64. pero por ejemplo haci sale
    instalar nes
    instalar snes
    instalar neorage
    instalar N64
    pero no quiero instalar nes y no importa el lo detecta para instalarlo...

    ResponderEliminar
  10. ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

    #define MyAppName "DP-M-Pack"
    #define MyAppVersion "1.0.0"

    [Setup]

    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    CreateAppDir=no
    ArchitecturesInstallIn64BitMode=x64 ia64
    Uninstallable=no
    OutputDir=setup.exe
    OutputBaseFilename=setup
    Compression=lzma2/ultra
    SolidCompression=yes
    ;SetupIconFile=107.ico

    [Languages]

    Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

    [Components]

    Name: "winrar"; Description: "wrar420es"; Types: "custom";
    Name: "cc"; Description: "ccsetup401"; Types: "custom";
    Name: "gpu"; Description: "GPU-Z.0.6.9"; Types: "custom";


    [Files]

    Source: "wrar420es.exe"; DestDir: "{tmp}"; Components: "winrar"; Flags: deleteafterinstall 32bit
    Source: "ccsetup401.exe"; DestDir: "{tmp}"; Components: "cc"; Flags: deleteafterinstall 32bit
    Source: "GPU-Z.0.6.9.exe"; DestDir: "{tmp}"; Components: "gpu"; Flags: deleteafterinstall 32bit


    [Run]

    Filename: "{tmp}\wrar420es.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando WinRar ..."; Components: "winrar"; MinVersion: 0.0,5.01;
    Filename: "{tmp}\ccsetup401.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando CCleaner ..."; Components: "cc"; MinVersion: 0.0,5.01;
    Filename: "{tmp}\GPU-Z.0.6.9.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Analizar Graficos ..."; Components: "gpu"; MinVersion: 0.0,5.01;


    [Types]

    Name: "custom"; Description: "Elegir elemetos"; Flags: iscustom; MinVersion: 0.0,5.01;

    [Messages]

    BeveledLabel=Pack por Area 51, 2012

    ResponderEliminar
  11. no me instala el ccleaner y el GPU-Z.0.6.9 como silent por que?

    ResponderEliminar
  12. hay muchos programas que no se instalan como silent osea que yo no haga nada por que... sera que habra otro metodo para que se un buen paquete de programas sin intervenir en la instalacion?

    ResponderEliminar
  13. sera por la opcion que tienen los de mas programas que te pide que seleccione idioma?

    ResponderEliminar
  14. hey se me olvida decir muchas gracias men por tu aporte...

    ResponderEliminar
  15. tendria que hacer repack de estos pero solo con un idioma? los probare asi para ver que pasa luego te digo...

    ResponderEliminar
  16. si me era eso hay que colocar solo un idioma para que sea con mucho silencio... gracias men espero que sigas ayudando a la gente que quiere estudiar y ser el futuro...

    ResponderEliminar
    Respuestas
    1. Gracias, recuerda que /Silent y /VerySylent son para setup basados en Innosetup para Nsis o MSI por ejemplo llevan otro parámetro correspondiente al programa con que se realizó el Setup.

      Eliminar
  17. mira que veo que el setup se demora mucho en comprimi lo que quiero ahora es compilar los emuladores y los rom comprimirlos por aparte y luego ahora si me pese menos el setup... y crearles unos iconos a cada emulador como hago?

    ResponderEliminar
    Respuestas
    1. Para eso haz un setup para cada emulador con sus accesos directos e iconos y luego crea otro script como el que pongo aquí para que lance cada instalación, en realidad este script se basa en eso, lanza setup individuales de varios programas. Para que luego no te comprima los demás setup en el que crees de lanzadera tienes que poner la constante {src} sin la opción source . Me explico mejor: crea setup normales para cada emulador, por ejemplo: Mame.exe, Neogeo.exe, copia esos archivos donde crees el script lanzadera setup.exe, por ejemplo si tienes el setup en c:\emuladores copia mame.exe y neogeo.exe en c:\emuladores. el script lanzadera seria algo así:

      [Setup]
      AppName={#MyAppName}
      AppVersion={#MyAppVersion}
      ;AppVerName={#MyAppName} {#MyAppVersion}
      CreateAppDir=no
      ArchitecturesInstallIn64BitMode=x64 ia64
      Uninstallable=no
      OutputDir=setup.exe
      OutputBaseFilename=setup
      Compression=lzma2/ultra
      SolidCompression=yes
      ;SetupIconFile=107.ico
      WizardImageFile=Styles\WizModernImage-IS.bmp


      [Languages]
      Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

      [Components]
      Name: "mame"; Description: "Emulador Mame"; Types: "custom"; MinVersion: 0.0,5.01; ExtraDiskSpaceRequired: 4294967296;
      Name: "neogeo"; Description: "Emulador NeoGeo"; Types: "custom"; MinVersion: 0.0,5.01; ExtraDiskSpaceRequired: 5294967296;

      [Run]
      Filename: "{src}\mame.exe"; StatusMsg: "Instalando Mame ..."; Components: "mame"; MinVersion: 0.0,5.01;
      Filename: "{src}\neogeo.exe"; StatusMsg: "Instalando Neogeo..."; Components: "neogeo"; MinVersion: 0.0,5.01;

      [Types]
      Name: "custom"; Description: "Elegir elemetos"; Flags: iscustom; MinVersion: 0.0,5.01;


      [Messages]
      BeveledLabel=Pack por Area 51, 2013

      Como el lanzadera solo detecta los megas que ocupa el correspondiente setup del mame o neogeo ponemos el extradiskspace con lo que ocupara el emulador una vez instalado para que lo calcule antes de instalarlo(se pone en bytes)

      Eliminar
  18. Gracias mi hermano mil gracias si era lo que queria hacer... quiero aprender hacer mas cosas pero creo que necesitarias explicarme mejo..

    Me gustaria hacer eso repack bn bacanos, me descargue los tutoriales estos:
    http://www.mediafire.com/download/d9czlwnkxgkmd0r/innofusion.7z

    Luego te pongo un par de script mas para que vayas mirándolos:


    http://www.mediafire.com/download/7b5nobot6v3qaps/Need_for_Speed%E2%84%A2_Undercover_%5B2.4c%5D.7z

    http://www.mediafire.com/download/4s74n4vmbrivhqi/Xenus2_botva2_traducido.7z

    pero mo se que hacer con eso... alguna cosa si me hicieras el favor y me dijeras como los pongo a andar con un repack propio seria lo ultimo que te pediria men..

    ResponderEliminar
  19. bueno asi me quedo el repack pero quisiera que la barra de instalacion se viera como si avanzara en verde tu me entiendes... se queda parada,... el hace la instalacion de todos los emuladores pero quiero que corra por cada instalacion la barra verde...


    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

    #define MyAppName "Emulators-Pack"
    #define MyAppVersion "1.0.0"
    ;#define records

    [Setup]

    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    CreateAppDir=no
    ArchitecturesInstallIn64BitMode=x64 ia64
    Uninstallable=no
    OutputDir=D:\ut\clasicos emuladores\Clasicos Emuladores Setup
    OutputBaseFilename=Emulators Pack
    Compression=lzma2/ultra
    SolidCompression=yes
    ;SetupIconFile=107.ico

    [Languages]

    Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

    [Components]

    Name: "nes"; Description: "Nintendo"; Types: "custom";
    Name: "snes"; Description: "Super Nintendo"; Types: "custom";
    Name: "neo"; Description: "NeoRage"; Types: "custom";
    Name: "N64"; Description: "Nintendo64"; Types: "custom"

    [Run]

    Filename: "{src}\Nes\setup.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Emulador De Nintendo ..."; Components: "nes"; flags: skipifdoesntexist;
    Filename: "{src}\Snes\setup.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Emulador De Super Nintendo ..."; Components: "snes"; flags: skipifdoesntexist;
    Filename: "{src}\NeoRage\setup.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Emulador De NeoGeo ..."; Components: "neo"; flags: skipifdoesntexist;
    Filename: "{src}\Project64\setup.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Emulador De Nintendo64 ..."; Components: "N64"; flags: skipifdoesntexist;


    [Types]

    Name: "custom"; Description: "Elegir elemetos"; Flags: iscustom;

    [Messages]

    BeveledLabel=Pack por Area 51, 2012

    ResponderEliminar
    Respuestas
    1. Los script innofusion y otros que puse son unas plantillas que puedes utilizar para tus repack, son ya avanzados tienen música, imágenes cambiantes y modulo para la compresión con arc, srep y precomp (tienes un pequeño tutorial de esta compresión en este blog), son ya avanzados y seria muy largo de explicar por aquí todas sus funciones por lo que puedes bajarlos e ir tu experimentando con ellos, tienes además algunas paginas con scripts ya realizados para que puedas personalizarlos con tus repack, por desgracia la mayoría son rusas. Tienes una comunidad dedicada al InnoSetup en Taringa de la que soy miembro donde puedes también exponer tus dudas http://www.taringa.net/comunidades/innorepacks/ , en referencia a la barra verde no se a que barra te refieres.

      Eliminar
  20. bueno estuve intentado hacer un repack con los codigos de need for speed undercover pero no doy men ayudame porfa... es lo ultimo que te pido men...

    ResponderEliminar
    Respuestas
    1. ¿Cual es el fallo que tienes?, recuerda que el script del Need es para compresión con Freearc.

      Eliminar
  21. me gustaria que remarcaras las lineas a combiar y lo pusieras aqui como especie de tutorial

    ResponderEliminar
  22. sebastian betancourt24 de julio de 2013, 16:50

    amigo gracias por todos estos tutoriales, tengo una duda sobre los componentes cuando estas usando isdone para descomprimir ya que se incluyen de otra manera segun tengo entendido, gracias de antemano

    ResponderEliminar
    Respuestas
    1. Si, con isdone es ya diferente, si tengo tiempo pondre un ejemplo con isdone.

      Un saludo

      Eliminar
  23. amigo por favor como puedo tener Varias instalaciones en una sola Inno Setup

    ResponderEliminar
    Respuestas
    1. Con tiempo tengo pensado hacer un tutorial mas extenso sobre el tema de componentes.

      Un saludo.

      Eliminar
  24. amigo por favor como puedo tener Varias instalaciones en una sola Inno Setup
    hola como estas amigo y como hago para que funcione con mis programas

    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

    #define MyAppName "DP-M-Pack"
    #define MyAppVersion "1.0.0"

    [Setup]

    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    CreateAppDir=no
    ArchitecturesInstallIn64BitMode=x64 ia64
    Uninstallable=no
    OutputDir=setup.exe
    OutputBaseFilename=setup
    Compression=lzma2/ultra
    SolidCompression=yes
    ;SetupIconFile=107.ico

    [Languages]

    Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

    [Components]

    Name: "codecs"; Description: "Codec de video para Windows 7/8 1.1.8.0"; Types: "custom"; MinVersion: 0.0,5.01;
    Name: "codecs4"; Description: "Componentes de 64 bits 3.7.5.0 (para sistemas de 64 bits)"; Types: "custom"; Check: "IsWin64"; MinVersion: 0.0,5.01;
    Name: "reproductor"; Description: "Reproductor Multimedia KMPlayer 3.3.0.33"; Types: "custom"; MinVersion: 0.0,5.01;
    Name: "reproductor2"; Description: "Reproductor Media Player Classic Home Cinema 1.6.2.4902"; Types: "custom"; MinVersion: 0.0,5.01;
    Name: "reproductor3"; Description: "Reproductor Media Player Classic Home Cinema 1.6.2.4902 x64"; Types: "custom"; Check: "IsWin64"; MinVersion: 0.0,5.01;


    [Files]

    Source: "win8codecs.exe"; DestDir: "{tmp}"; Components: "codecs"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 32bit
    Source: "x64Components.exe"; DestDir: "{tmp}"; Components: "codecs4"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit
    Source: "KMPlayer3.3.0.33.exe"; DestDir: "{tmp}"; Components: "reproductor"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 32bit
    Source: "MPC-HC.1.6.2.4902.x86.exe"; DestDir: "{tmp}"; Components: "reproductor2"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 32bit
    Source: "MPC-HC.1.6.2.4902.x64.exe"; DestDir: "{tmp}"; Components: "reproductor3"; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit


    [Run]

    Filename: "{tmp}\win8codecs.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Codec de video para Windows ..."; Components: "codecs"; MinVersion: 0.0,5.01;
    Filename: "{tmp}\x64Components.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Componentes de 64 bits ..."; Components: "codecs4"; MinVersion: 0.0,5.01;
    Filename: "{tmp}\KMPlayer3.3.0.33.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Reproductor ..."; Components: "reproductor"; MinVersion: 0.0,5.01;
    Filename: "{tmp}\MPC-HC.1.6.2.4902.x86.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Reproductor ..."; Components: "reproductor2"; MinVersion: 0.0,5.01;
    Filename: "{tmp}\MPC-HC.1.6.2.4902.x64.exe"; Parameters: "/VERYSILENT"; StatusMsg: "Instalando Reproductor ..."; Components: "reproductor3"; MinVersion: 0.0,5.01;


    [Types]

    Name: "custom"; Description: "Elegir elemetos"; Flags: iscustom; MinVersion: 0.0,5.01;

    [Messages]

    BeveledLabel=Pack por Area 51, 2012

    ResponderEliminar
  25. este script Xenus2_botva2 que esa publicado en los comentarios marca error en la linea 150

    ResponderEliminar