Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Setup e richieste di sostituzione...

Facendo il pacchetto di installazione con il Wizard di VB ottengo Setup.EXE.
Avviandolo sulla macchina di destinazione (spesso e volentieri) esce il
messaggio di richiesta di mantenimento del file locale in quanto più
aggiornato rispetto a quello in fase di installazione.
Ora (senza entrare nel merito di aggiornamenti della macchina origine che
non voglio incasinare visto che ora va tutto bene per ogni destinazione) ho
cercato nel sorgente del Setup1, ma, non avendo trovato chiaramente il
punto, ho la sensazione che tale messaggio sia originato dal sistema
operativo della macchina ricevente.
Comunque sia, c'è modo di evitare quel messaggio (magari opzionalmente) e
imporre la risposta affermativa per mantenere quindi i file più recenti già
presenti sul sistema di destinazione?
Ho il terrore che qualche utente mi clicchi sul No e mi sostituisca un file
di sistema (più recente) con quello (meno recente) che sta sul mio CD, con i
danni che non voglio nemmeno immaginare... Grazie.

 danni che non voglio nemmeno immaginare... Grazie.
Mi associo alla tua invocazione di aiuto, in quanto nutro lo stesso terrore!
:(

 operativo della macchina ricevente.
se non sbaglio il  messaggio viene generato dal Setup1
prova a vedere il form "frmOverwrite"

*<- morpheus ->* ha scritto:

Sě, grazie. Ho visto e sono un pirla: Guardavo il codice della versione da
me modificata (nella quale avevo segato quella chiamata), ma ... distribuivo
l'EXE dell'originale MS...
Wodka avrŕ il suo da fare col bestiario...
Nei prossimi giorni inserirň nel Setup1 delle istruzioni adeguate e le
pubblicherň, per uso e consumo degli eventuali interessati.

Per evitare che venga posta la domanda di sostituzione di un file (già
residente sul sistema di destinazione) con una versione meno recente
proveniente dal pacchetto di installazione distribuito, ho fatto le
modifiche che seguono e che si limitano, nel caso si verifichino le
condizioni descritte, a segnalare (magari per aggiornare la macchina di
composizione del pacchetto), ma non consentono la sostituzione del file già
presente nel sistema di destinazione.
Ehm..., non l'ho provata, ma un euro son disposto a scommetterlo sul fatto
che funzioni.
Quella che segue è una parte del codice del file SETUP1.BAS (nome del
modulo: basSetup1), preso dalla Sub CopySection.
Il progetto che lo contiene (Setup1.VBP) è normalmente residente
in ?:\Programmi\Microsoft Visual Studio\VB98\Wizards\PDWizard
Per individuare il punto di modifica, fare una ricerca (magari estesa a
tutto il progetto corrente) di frmOverwrite e, in questo post, cercare ###
per vedere le modifiche. Sono solo 3 righe e, poco dopo, una label che ho
aggiunto per comodità.
La riga col MsgBox può essere anche tolta (non verrà segnalato nulla), che
contano sono le due successive: owValue = owYes e il Goto che salta la
precedente richiesta "a rischio" di risposta negativa (non mantenere) per il
file o, addirittura, per tutti i file nelle stesse condizioni.
'...
        'Next we'll deal with whether this file needs updrading.
        '
        If intRC <> vbIgnore Then
            'Assume the file does need upgrading.
            fOverWrite = True
            'Unless the user has already decided to upgrade all files, check
and
            'see if this file needs upgrading.
            owValue = owNo
            If fOverwriteAll Then
                fcValue = SourceFileIsNewer(sFile, strSrcName, strSrcDir,
strDestName, strDestDir, strDestVer)
                If sFile.fDestDirRecognizedBySetupExe And
FileInUse(strDestDir & strDestName) Then
                    If fcValue = fcOlder Then
                        '
                        'If the destination file is in use and it's a file
                        'that Setup.Exe recognizes, then there is no chance
                        'of succeeding a file upgrade, so just assume a Yes
                        'return from the dialog.
                        '
                        owValue = owYes
                    'Else
                    '    This will lead to an error when the file is copied,
but
                    '    the error is legitimate.
                    End If
                ElseIf fcValue = fcEquivalent Then
                    owValue = owYes
                End If
            Else
                Select Case SourceFileIsNewer(sFile, strSrcName, strSrcDir,
strDestName, strDestDir, strDestVer)
                    Case fcEquivalent
                        owValue = owYes
                    Case fcOlder
                        If sFile.fDestDirRecognizedBySetupExe And
FileInUse(strDestDir & strDestName) Then
                            '
                            'See previous comment.
                            '
                            owValue = owYes
                        Else
'                               ### MODIFICA 170303 - INIZIO
                            Call MsgBox("Il file di origine" & vbCrLf &
strSrcName & vbCrLf & "ha una versione inferiore a quello" & vbCrLf & "già
presente su questo sistema." & vbCrLf & vbCrLf & "Non verrà installato!",
vbOKOnly + vbInformation)
                            owValue = owYes     'Impedisce la sostituzione
                            GoTo dopo_richiesta
'                               ### MODIFICA 170303 - FINE
                            '
                            'Source file is not newer than destination file;
                            'prompt user for what to do
                            '
                            Set frm = New frmOverwrite
                            frm.FileName = strDestDir & strDestName
                            frm.Version = strDestVer
                            frm.Description = GetFileDescription(strDestDir
& strDestName)
                            frm.Show vbModal, frmSetup1
                            owValue = frm.ReturnVal
                            Set frm = Nothing
'   ### MODIFICA 170303 - INIZIO
dopo_richiesta:
'   ### MODIFICA 170303 - FINE
                        End If
                End Select
            End If
            Select Case owValue
                Case owYes 'Keep this file; don't upgrade
                    fOverWrite = False
                    'We won't be copying the file below, so finish dealing
                    '   with it now.
                    intRC = vbIgnore
                    fFileWasUpToDate = True
                    If strExt = gsEXT_FONTTTF Then 'Both strExt and
gsEXT_FONTTTF are uppercase
                        'Do nothing - fonts are not logged nor
                        '   refcounted.
                    ElseIf strExt = gsEXT_FONTFON Then 'Both strExt and
gsEXT_FONTFON are uppercase
                        'Do nothing - fonts are not logged nor
                        '   refcounted.
                    Else
                        DecideIncrementRefCount strDestDir & strDestName,
sFile.fShared, sFile.fSystem, True
                        AddActionNote ResolveResString(resLOG_FILEUPTODATE)
                        CommitAction
                    End If
                Case owNoToAll 'Overwrite all files
                    fOverwriteAll = True
                'Case owNo 'Overwrite the file
                    'We assumed this above, so we don't need to do
                    '   anything now.
                    'fOverWrite = True
            End Select
        End If
        '
        'After all of this, if we're still ready to copy, then give it a
whirl!
'...

 residente sul sistema di destinazione) con una versione meno recente
[BIG CUT]
la modifica che hai fatto mi sembra corretta, non sono sicuro se imponendo
    owValue = owYes
viene lasciata la copia esistente.
Ti consiglio di fare un prova, creati un esempietto e fai l'installazione
mettendo prima su disco alcuni file più recenti e vedi cosa succede.

 mettendo prima su disco alcuni file più recenti e vedi cosa succede.
Io la farò alla prima occasione. Perchè non la fai tu? ;-)

 Io la farò alla prima occasione. Perchè non la fai tu? ;-)
perchè il thread l'hai cominciato tu, e i cocci sono tuoi :-)
--
Salutoni
Sergio