Qual è una buona utility gratuita per creare un eseguibile autoestraente con una versione di file incorporata? [chiuso]

StackOverflow https://stackoverflow.com/questions/151403

Domanda

Secondo le risposte a questa domanda, non riesco a incorporare una versione del file nel mio file .msi.

L'installer che do al client deve avere una versione del file.

Quindi, quello che voglio fare è creare un eseguibile autoestraente contenente il file msi e setup.exe generato da Visual Studio e mettere invece la versione del file su questo eseguibile autoestraente.

Pertanto, ho bisogno di un'utilità per creare eseguibili autoestraenti che supporti l'incorporamento di una versione di file nel suo output. Deve anche supportare l'esecuzione automatica di un file dopo l'estrazione, quindi posso avviare automaticamente il vero programma di installazione. Sarebbe bello se fosse programmabile.

Tutto quello che ho potuto trovare era questo , che sembra fantastico, ma io preferirei di gran lunga un'alternativa gratuita.

Qualcuno ha qualche suggerimento?

Modifica: Per chiarire, non sto davvero cercando di creare un programma di installazione, ho già un progetto di installazione VS. Voglio solo un autoestraente (come può creare WinZip). Pertanto, l'utente esegue il mouse su Setup-Blorgbeard2008.exe e visualizza "Versione: 1.0.0.0". L'utente lo duplica, estrae silenziosamente setup.exe e setup.msi in una cartella temporanea, quindi esegue setup.exe. L'utente quindi visualizza la normale schermata di installazione e procede normalmente.

Un'altra modifica: Sì, non ho più bisogno di un autoestraente, dato che alla mia altra domanda ora è stata data una risposta. Questo rende l'intera questione praticamente irrilevante. sarebbe ancora bello poter distribuire un solo file, anziché setup.exe e setup.msi.

È stato utile?

Soluzione

NSIS può farlo.

Parte del nostro ambiente di compilazione è uno script che fornisce informazioni sulla versione a un'intestazione " file che il nostro script NSIS genera. Dovresti essere in grado di utilizzare qualcosa di simile per incorporare le informazioni sulla versione e puoi sicuramente far eseguire a NSIS un file dopo l'estrazione.

In effetti, poiché NSIS crea il pacchetto di installazione ... potresti essere in grado di semplificare molto il tuo approccio.

Altri suggerimenti

Un po 'sorpreso che non sia ancora elencato qui: IExpress è uno strumento semplice in arrivo con Windows e può essere utilizzato per creare programmi di installazione autoestraenti.

Quando si scarica Windows SDK, sono presenti MSIStuff.exe e Setup.exe per i quali MS fornisce il codice sorgente da compilare. MSIStuff farà "roba" l'MSI fornito in Setup.exe. Setup.exe può quindi essere distribuito.

Ulteriori informazioni su http://support.microsoft.com/kb/888473

Contro:

  • Dovrai ricompilare Setup.exe con la versione del tuo prodotto ogni volta che è disponibile una nuova versione del tuo prodotto (MSI).
  • Non sono sicuro di quale licenza sia distribuita l'origine Setup.exe.

In realtà ho finito per usare NSIS per questa particolare versione, dato che avevo bisogno di raggruppare anche alcuni altri installer.

Per riferimento, ecco lo script che ho usato:

VIProductVersion              "1.0.0.0" ; set version here
VIAddVersionKey "FileVersion" "1.0.0.0" ; and here!
VIAddVersionKey "CompanyName" "MyCompany"
VIAddVersionKey "LegalCopyright" "© MyCompany"
VIAddVersionKey "FileDescription" "Installer for MyProgram"
OutFile MyProgram-Setup.exe

SilentInstall silent

Section Main    
    SetOutPath $TEMP
    SetOverwrite on
    File SharedManagementObjects.msi
    File SQLSysClrTypes.msi
    File Release\Setup.exe
    File Release\Setup.msi
    ExecWait 'msiexec /passive /i "$OUTDIR\SharedManagementObjects.msi"'
    ExecWait 'msiexec /passive /i "$OUTDIR\SQLSysClrTypes.msi"'
    Exec     '"$OUTDIR\Setup.exe"'
SectionEnd

DotNetZip può produrre un archivio autoestraente, che include un numero di versione che appare in un Esplora risorse mouseover. SFX include anche un nome, una descrizione, una versione del prodotto e un copyright del prodotto visualizzati in una vista Proprietà / Dettagli in Esplora risorse.

L'SFX può eseguire un comando specificato dopo l'estrazione.

La creazione di SFX può essere copiata da PowerShell, oppure è possibile scrivere un programma per farlo, usando VB.NET, C #, VBScript o JavaScript, ecc.

Per ottenere le informazioni sul numero di versione, è necessario almeno v1.9.0.26 di DotNetZip.

nsis sembra una buona scelta

prova inno-setup

imposta la direttiva VersionInfoVersion sul tuo numero di versione binario, ad es.

VersionInfoVersion = 1.1.0.0

questo apparirà nel testo e nelle proprietà del mouse

Esperimento in corso qui:

Informazioni sulla versione pop-up: http://screencast.com/t/LVqvLfxCj3g

Dalle informazioni sull'assieme di Visual Studio: http://screencast.com/t/fqunlMNh13

Installato con un semplice vecchio file MSI.

Aggiungendo la versione " 1.5.0 " testo nella proprietà Descrizione del progetto di installazione, il numero di versione mostra anche sul file MSI in questo modo: http://screencast.com/t/A499i6jS

In genere, ho semplicemente rinominato il file MSI, come DataMonkey_1_5_0.msi per i miei scopi.

FYI che utilizza un autoestraente DotNetZip non ha senso se si utilizza bootstrapper setup.exe per verificare che .NET sia installato (l'autoestraente DotNetZip richiede .NET 2.0).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top