Domanda

Ho creato un programma di installazione MSI standard per P & amp; D della mia applicazione che utilizza i seguenti componenti:

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

Il programma di installazione funziona molto bene e senza problemi. Il problema si verifica quando l'utente tenta di installare nuovamente l'applicazione sull'applicazione esistente utilizzando il programma di installazione MSI. Attualmente, viene visualizzata una schermata con 2 opzioni "Ripara" & Amp; & Quot; Rimuovi " ;. Entrambe queste opzioni non funzionano e corrompono l'applicazione installata.

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 come minimo dovrei essere in grado di nascondere o in qualche modo non fornire l'opzione di riparazione.

Qualche aiuto o suggerimento per me? Quindi, finora ho provato tante cose come usare ORCA aggiungere proprietà NotRepair ecc. Ma nessuna di queste ha funzionato.

È stato utile?

Soluzione

Dai un'occhiata alla Guida di Windows Installer su MSDN per queste due proprietà:

Altri suggerimenti

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

Per fare ciò devi modificare il .MSI dopo che è stato creato dalla build di installazione di .NET. Il modo più semplice supportato da Microsoft per farlo è Orca . Puoi installare Orca dal .NET Framework SDK . Se ritieni di avere già l'SDK, ma non hai Orca nel menu di avvio, cerca nel tuo computer " Orca.exe " o " Orca.msi " ;.

Una volta installato Orca, eseguilo. Apri il tuo file MSI utilizzando l'interfaccia utente di Orca. Sulla sinistra vedrai un elenco di " Tabelle " ;. Scegli la tabella Proprietà . Nel riquadro di destra, fare clic con il tasto destro e aggiungere. Aggiungi un nodo chiamato ARPNOREPAIR . Assicurati di impostare il valore sulla stringa vuota " " . Aggiungi anche un nodo per ARPNOMODIFY se non desideri che l'opzione di modifica venga visualizzata in Windows per il tuo programma.

Mi rendo conto che questo problema ha alcuni anni ormai, ma suppongo che persone come me continuino ad affrontare questo problema. Sumeet menziona in un commento alla soluzione accettata che l'utente è ancora in grado di accedere allo schermo con entrambe le opzioni, "Ripara". e " Rimuovi " ;, mostrato.

Sembra in effetti ai tre diversi modi in cui un utente può accedere al programma di installazione per un'applicazione.

Uno: Come già risposto, ARPNOMODIFY e ARPNOREPAIR risolvono il problema solo nel programma Aggiungi Rimuovi, può essere eseguito con " Orca.exe " ;.

Due: Facendo clic con il tasto destro del mouse sull'installer per l'MSI. Purtroppo questo è l'unico punto in cui sembra non esserci 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 "Ripara" e " Rimuovi " ;.

Abbiamo trovato questo adattamento pulito di seguito per risolvere il 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 da Paul Brun per questo.

  1. Apri il file msi con Orca.exe.
  2. Vai nella tabella "Proprietà".
  3. Aggiungi la chiave 'ARPNOMODIFY' con il valore 1 .
  4. Aggiungi la chiave 'ARPNOREPAIR' con il valore 1 .
  5. Modifica il valore della proprietà 'MaintenanceForm_Action' da Repair a Rimuovi .
  6. Vai nella tabella "Controllo".
  7. Trova la voce con Dialog_ 'MaintenanceForm' e controlla 'BodyText'.
  8. Cambia la proprietà 'Testo' in questo: {\ VSI_MS_Sans_Serif13.0_0_0} Seleziona " Finish " per rimuovere [ProductName]
  9. Trova la voce con Dialog_ 'MaintenanceForm' e controlla 'RepairRadioGroup'.
  10. Cambia la proprietà 'Control_Next' da CancelButton a FinishButton .
  11. Trova e rimuovi la voce con Dialog_ 'MaintenanceForm' e controlla 'RepairRadioGroup'.

Correlato a fare i passaggi precedenti potrebbe essere quello di automatizzare il processo di adattamento della msi con una trasformazione ottenuta eseguendo i passaggi solo una volta. Maggiori informazioni su come farlo sono disponibili qui: Usa Orca per modificare msi dalla riga di comando?

Sono d'accordo con Henrik, ma nel mio caso l'ultimo passaggio

  

Trova e rimuovi la voce con Dialog_ 'MaintenanceForm' e controlla 'RepairRadioGroup'.

causa 2814 errore.
Quindi il mio suggerimento è: rendere invisibile RepairRadioGroup. Per farlo basta impostarlo, Attributo a 0

  

UPDATE Control SET Attributes = 0 WHERE Control = 'RepairRadioGroup'

Questo è molto più semplice da oggi se vai su installshield per modificare il tuo file ISM. Per disabilitare il pulsante Cambia e Ripara dalla schermata Aggiungi / Rimuovi programma, imposta le seguenti impostazioni su su Installation Designer tab > nodo Informazioni installazione nel riquadro di navigazione > nodo Informazioni generali nel riquadro di navigazione > Aggiungi o rimuovi programmi nel riquadro dei dettagli

  1. Disabilita pulsante Cambia
  2. Disabilita pulsante di riparazione

 inserisci qui la descrizione dell'immagine

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

  1. Cambia il testo dell'etichetta del messaggio di benvenuto in un messaggio di errore, ad es. " Un'altra versione di questo prodotto è già installata. L'installazione non può continuare. & Quot;
  2. Nel comportamento facendo clic sul pulsante Next aggiungi semplicemente l'evento EndDialog . Imposta la sua condizione di esecuzione su 1 in modo che venga sempre eseguita. Imposta il suo Value su Exit
  3. Cambia il testo del pulsante Next in " Finish " ;.
  4. Disabilita o nascondi il pulsante Annulla se vuoi.

Sei pronto!

Ho inserito setup.exe e MSI in un file EXE. 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 ed esce. In questo modo MSI non viene mai avviato se l'applicazione è già installata, quindi la schermata Ripara e Rimuovi non viene mai visualizzata. Per quanto riguarda il pulsante Cambia dalla schermata Aggiungi / Rimuovi, ho usato la soluzione fornita da "CheGueVerra". Grazie a te.

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