it-swarm-eu.dev

È possibile eseguire un file dopo l'estrazione da un archivio di estrazione automatica di 7-Zip (SFX)?

Sto provando a fare un'applicazione compressa deployabile.

Attualmente sto prendendo un set di file che ho pubblicato dal mio IDE (Visual Studio 2008 - Applicazione WPF pubblicata) e li comprimono in un archivio SFX 7-Zip.

I miei utenti hanno chiesto se possono "installare un clic" dal 7-Zip exe. C'è una lista di parametri quando creo l'archivio. C'è un modo per impostare una sorta di combinazione di parametri per richiamare l'eseguibile del programma di installazione che viene estratto?

Sfortunatamente la documentazione di 7-Zip non sembra coprire questo scenario. Ho visto diverse applicazioni a pagamento che fanno qualcosa di simile a questo, ma sto cercando di mantenere lo strumento che sto scrivendo privo di codice concesso in licenza in modo che possiamo usarlo internamente.

37
Mike G

Moduli SFX per installatori

I moduli SFX per installatori sono inclusi in un pacchetto esterno (7z_extra). Puoi scaricare questi moduli da www.7-Zip.org. I moduli SFX per installatori (7zS.sfx e 7zSD.sfx) consentono di creare il proprio programma di installazione. Tale modulo estrae l'archivio nella cartella temporanea dell'utente, esegue un programma specificato e rimuove i file temporanei al termine del programma. Un archivio autoestraente per gli installatori deve essere creato come unire 3 file: SFX_Module, Installer_Config, 7z_Archive. Inoltre, è consentito un file opzionale, Installer_Config. È possibile utilizzare il seguente comando per creare un archivio autoestraente di installazione:

copy /b 7zS.sfx + config.txt + archive.7z archive.exe

È possibile ottenere una dimensione del pacchetto di installazione di dimensioni ottimali, se i file di installazione non sono compressi prima di includerli nell'archivio 7z.

L'opzione -y per il modulo di installazione specifica l'estrazione in modalità non interattiva.

Fonte

Per specificare un programma da eseguire dopo lo spacchettamento, utilizzare l'attributo RunProgram. Ad esempio, ecco un esempio config.txt che esegue Install.cmd dopo il disimballaggio. La directory di lavoro corrente sarà il livello superiore dell'albero archive.7z espanso, quindi è necessario che Install.cmd risieda.

;[email protected]@!UTF-8!
Title="Your Title"
RunProgram="Install.cmd"
;[email protected]@!

Gli argomenti passati all'eseguibile SFX vengono passati allo script Install.cmd.

33
Molly7244

La soluzione concordata è corretta, ma in realtà non aiuta a spiegare cosa è effettivamente necessario fare !. Ho letto questo e molte altre soluzioni e non sono riuscito a trovare istruzioni semplici e complete su come farlo.

Io sono confuso come me, per favore leggi il mio post sul blog che fornisce le istruzioni passo passo su come ottenere ciò che Molly7244 ha pubblicato.

Come creare un archivio autoestraente che esegua il tuo setup.exe con l'interruttore 7Zip -sfx

È stato portato alla mia attenzione che i collegamenti possono diventare morti così, ecco i passaggi, dal mio blog

Passaggio 1: installazione della cartella di installazione

Per semplificare questa operazione, crea una cartella c:\Install. Qui è dove copieremo tutti i file richiesti.

Passo 2 - 7Scarica i tuoi installatori

  1. Vai alla cartella che contiene il tuo .msi e il tuo setup.exe
  2. Seleziona sia .msi che setup.exe
  3. Fare clic con il tasto destro e selezionare 7Zip -> "Aggiungi all'archivio"
  4. Assegna un nome al tuo archivio "Installer.7z" (o un nome a tua scelta)
  5. Clicca Ok
  6. Ora dovresti avere "Installer.7z".
  7. Copia questo file .7z nella directory c:\Install

Passaggio 3: Ottieni il modulo di estensione sfx 7z-Extra

Devi scaricare 7z-Extra.

  1. Segui questo link per andare a download 7Zip
  2. Devi scaricare la versione 9.20 (come @ May-2015) in quanto la beta non contiene i file corretti.
  3. A link diretto .
  4. Estrai i file extra 7Zip
  5. Copia il file "7zS.sfx" in c:\Install

Passaggio 4: config.txt

Vorrei raccomandare l'uso di NotePad ++ per modificare questo file di testo in quanto sarà necessario codificare in UTF-8, le seguenti istruzioni stanno usando notepad ++.

  1. Utilizzando Windows Explorer vai a c:\Installa
  2. fare clic con il tasto destro e scegliere "Nuovo file di testo" e denominarlo config.txt
  3. fare clic con il tasto destro e scegliere "Modifica con NotePad ++
  4. Fai clic sul "Menu di codifica" e scegli "Codifica in UTF-8"
  5. Inserisci qualcosa del genere:

    ;[email protected]@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;[email protected]@!
    

Modifica questo sostituendo [SOFTWARE v1.0.0.0] con il nome del tuo prodotto. Le note sui parametri e le opzioni per il file di installazione sono qui

CheckPoint

Ora dovresti avere una cartella "c:\Install" con i seguenti 3 file:

  1. Installer.7z
  2. 7zS.sfx
  3. config.txt

Passaggio 5: creare l'archivio

Queste istruzioni ho trovato sul web ma da nessuna parte ha spiegato nessuno dei 4 passaggi sopra.

  1. Apri una finestra di cmd, Finestra + R -> cmd -> premi invio
  2. Nella finestra di comando digita quanto segue

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. Cerca in c:\Install e vedrai che hai un MyInstaller.exe

    Sei finito

Esegui il programma di installazione

Fare doppio clic su MyInstaller.exe e verrà richiesto con il messaggio. Fare clic su OK e verrà eseguito setup.exe.

Post scriptum Nota sull'automazione

Ora che hai questo lavoro nella tua directory c:\Install creerei un file "Install.bat" e inserirò lo script di copia.

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

Ora è possibile modificare ed eseguire Install.bat solo ogni volta che è necessario ricostruire una nuova versione del pacchetto di distribuzione.

20
jcrawfor74

Si dovrebbe anche guardare NSIS . Con esso, è possibile creare un programma di installazione che è compresso con lo stesso metodo utilizzato da 7-Zip ( LZMA ), quindi dovrebbe essere approssimativamente stessa dimensione e hai il pieno controllo del processo di installazione.

7
Matthew Talbert

Basandosi sulla risposta di jcrawfor74, ecco alcune informazioni aggiuntive:

Invece di 7zS.sfx , puoi anche usare il file 7zS2.sfx . Questa è una versione molto più piccola (28 kB contro 140 kB), ma non supporta il file config.txt. Quindi puoi semplicemente lasciarlo nel comando copia. Se si desidera creare minuscoli script di configurazione, questo consente di creare file EXE più piccoli.

Il modulo SFX più piccolo non fa domande. Estrae i file in una cartella temporanea come l'altro modulo, quindi trova i candidati eseguibili. In base al codice sorgente (disponibile anche nella pagina dei download), in C\Util\SfxSetup\SfxSetup.c, pesa i file in modo diverso in base al nome e all'estensione, quindi seleziona il file con il punteggio più alto.

Entrambi i moduli SFX vengono eseguiti automaticamente come Amministratore , almeno in Windows 10 e non possono essere configurati. Anche se questo comportamento potrebbe essere auspicabile per le impostazioni a livello di sistema, questo potrebbe non essere sempre il caso. Inoltre, questa decisione si basa solo sui dati della versione del file perché non è incluso manifest che dice esplicitamente a Windows cosa fare. La compatibilità con Windows guarda il file e trova stringhe come "Setup" che portano al prompt di elevazione.

Se hai bisogno di un modulo SFX che non richiede autorizzazioni di amministratore, puoi ricostruire il modulo SFX dal sorgente, o più semplice, modificare le informazioni sulla versione del file con un editor di risorse come questo . Basta rimuovere il "Setup" di Word dal campo FileDescription, nel caso del suddetto Resource Hacker compilare il file e salvare il file EXE. È anche possibile eseguire questo passaggio direttamente sul file 7zS.sfx o 7zS2.sfx e tenerlo da qualche parte in modo da poterlo utilizzare per creare pacchetti SFX non elevati. E puoi usare questo per personalizzare completamente le informazioni sulla versione del file per inserire il nome del tuo prodotto o qualcosa in esso che descrive il carico utile.

1
ygoe