2009-05-04 12 views
5

Ho creato un programma di installazione standard di MSI per P & D della mia applicazione che utilizza i seguenti componenti:Rimuovi schermata delle opzioni di riparazione da MSI installer

  • un servizio WCF ospitato come servizio di Windows.
  • Un'applicazione GUI che comunica con quel servizio.
  • Un'estensione shell Dll.

L'installazione sta funzionando molto bene e senza alcun problema. Il problema si verifica quando l'utente tenta di installare nuovamente l'applicazione sull'applicazione esistente utilizzando il programma di installazione MSI. Attualmente, viene visualizzato con schermo con 2 opzioni "Repair" & "Rimuovi". Entrambe queste opzioni non funzionano e corrompono l'applicazione intalled.

Quello che voglio è saltare questa schermata e mostrare qualcosa come un MessageBox che dice che l'applicazione è già installata. Poiché non è obbligatorio per me fornire l'opzione di riparazione all'utente. E al minimo dovrei essere in grado di nascondere o in qualche modo non fornire l'opzione di riparazione.

Qualsiasi aiuto o suggerimento per me? Quindi, finora ho provato tante cose come usare ORCA, aggiungere la proprietà NotRepair ecc. Ma nessuno di loro ha funzionato.

risposta

5

Date un'occhiata al Windows Installer Guida a MSDN per queste due proprietà:

+1

Sono già a conoscenza di queste funzionalità ma le mie esigenze sono diverse. Nel mio caso, l'utente sta avendo il programma di installazione MSI. Ora può provare a installare di nuovo il software dopo averlo installato una volta. Ecco il problema, quando MSI mostra una schermata con 2 opzioni 1. Riparazione 2. Rimuovi Solo che non voglio quella schermata. Questa è la stessa schermata che viene dopo "cambia" in "Aggiungi Rimuovi programmi" che hai menzionato. – Sumeet

+0

Cosa vuoi quando l'utente finale fa clic sul tuo MSI, quando viene installato? – CheGueVerra

0

ho avvolto setup.exe e MSI all'interno di un un file EXE file. Quale al clic estrae i file e attiva Setup.exe. In questo exe, ho aggiunto un codice per verificare se l'applicazione è già installata nella macchina o meno. Nel caso sia installato, chiedo all'utente e termina. In questo modo MSI non viene mai avviato se l'applicazione è già installata, quindi la schermata di riparazione e rimozione non viene mai visualizzata. Per quanto riguarda, pulsante Cambia da Aggiungi/Rimuovi schermata, ho utilizzato la soluzione fornita da "CheGueVerra". Grazie a te.

4

La risposta accettata lascia alcune cose a qualcuno senza molta esperienza di installazione.

Per fare ciò è necessario modificare il file .MSI dopo averlo creato dal build di installazione .NET. Il facile modo supportato da Microsoft per fare ciò è Orca. È possibile installare Orca dallo .NET Framework SDK. Se pensi di avere già l'SDK, ma non hai Orca nel menu Start, cerca la tua macchina per "Orca.exe" o "Orca.msi".

Una volta installato Orca, è sufficiente eseguirlo. Apri il tuo file MSI usando l'interfaccia utente di Orca. Sulla sinistra vedrai una lista di "Tabelle". Scegli la tabella Proprietà. Nel riquadro di destra, fai clic con il pulsante destro del mouse e aggiungi. Aggiungi un nodo chiamato ARPNOREPAIR. Assicurati di impostare il valore sulla stringa vuota "". Aggiungi anche un nodo per ARPNOMODIFY se non vuoi che l'opzione di modifica venga visualizzata in Windows per il tuo programma.

+1

Vorrei sottolineare esplicitamente che le proprietà devono essere maiuscole ... – Wolf

1

Realizzare che questo problema ha qualche anno ormai, ma suppongo che le persone come me continuino ad avere ancora questo problema. Sumeet menziona in un commento alla soluzione accettata che l'utente è ancora in grado di arrivare allo schermo con entrambe le opzioni, "Repair" e "Remove", mostrate.

Sembra infatti che i tre diversi modi in cui un utente può accedere al programma di installazione per un'applicazione.

Uno: Come già risposto ARPNOMODIFY e ARPNOREPAIR risolve il problema solo in Add Remove Program, può essere eseguito con "Orca.exe".

Due: facendo clic destro il programma di installazione per il MSI. Purtroppo questo è l'unico punto in cui sembra che non ci sia modo di evitare entrambe le opzioni senza apportare modifiche a livello di computer per tutti i file msi.

Tre: Facendo doppio clic sul programma di installazione, se già installato, è presente una schermata con i pulsanti di opzione "Ripristina" e "Rimuovi".

Trovato questo adattamento pulito qui sotto per la risoluzione del terzo punto di accesso, in qualche modo riscritto, qui: http://us.generation-nt.com/there-way-disable-remove-repair-option-through-orca-project-properties-help-49010162.html. Rimuove graficamente la scelta di consentire l'opzione di riparazione. Il mio ringraziamento va a Paul Brun per questo.

  1. Aprire il file msi con Orca.exe.
  2. Vai nella tabella "Proprietà".
  3. Aggiungere la chiave "ARPNOMODIFY" con il valore 1.
  4. Aggiungere la chiave "ARPNOREPAIR" con il valore 1.
  5. Modificare il valore della proprietà 'MaintenanceForm_Action' Repair-Remove.
  6. Andare nella tabella 'Controllo'.
  7. Trova la voce con Dialog_ 'MaintenanceForm' e Controlla 'BodyText'.
  8. Cambiare il 'testo' immobile a questo: {\VSI_MS_Sans_Serif13.0_0_0}Select "Finish" to remove [ProductName]
  9. Individuare la voce con Dialog_ 'MaintenanceForm' e Controllo 'RepairRadioGroup'.
  10. modificare la proprietà 'Control_Next' CancelButton-FinishButton.
  11. trovare e rimuovere la voce con Dialog_ 'MaintenanceForm' e Controllo 'RepairRadioGroup'.

In relazione alla procedura sopra descritta, è possibile automatizzare il processo di adattamento di msi con una trasformazione ottenuta eseguendo i passaggi una sola volta. Maggiori informazioni su come fare che può essere trovato qui: Use Orca to edit msi from command line?

+0

Grazie !!! Mi hai salvato la vita! – Aditi

1

Concordo con Henrik, ma nel mio caso ultimo passo

trovare e rimuovere la voce con Dialog_ 'MaintenanceForm' e Controllo 'RepairRadioGroup'.

causa errore 2814.
Quindi il mio suggerimento è: rendere RepairRadioGroup invisibile.Per farlo è sufficiente impostare, s Attribute a 0

UPDATE controllo SET Attributi = 0 dove il controllo = 'RepairRadioGroup'

+0

Grazie per aver aggiunto la risposta di Henrik. U ha giocato un ruolo cruciale nel salvare la mia vita! – Aditi

0

Questo è molto più facile da oggi se si va via InstallShield per modificare il File ISM. Per disattivare il pulsante Change e Repair da Aggiungi/Rimuovi schermata del programma impostato le impostazioni di seguito per Yes su Installation Designer scheda>Installation Information nodo nel pannello di navigazione>General Information nodo nel pannello di navigazione>Add or Remove Programs sezione nel riquadro dettagli

  1. Disable Change Button
  2. Disable Repair Button

enter image description here

Per affrontare il secondo problema, è sufficiente modificare la schermata di dialogo integrata di MaintenanceWelcome di installshield.

  1. Modificare il testo dell'etichetta del messaggio di benvenuto in alcuni messaggi di errore, ad es. "Un'altra versione di questo prodotto è già installata. L'installazione non può continuare."
  2. Nel comportamento sul clic del pulsante Next è sufficiente aggiungere l'evento EndDialog. Impostare la sua condizione di esecuzione su 1 in modo che venga eseguita sempre. Impostare Value su Exit
  3. Modificare il testo del pulsante Next su "Fine".
  4. Disabilitare o nascondere il pulsante Cancel se lo si desidera.

Sei tutto pronto!

Problemi correlati