Bonjour,

Voilà, je m'arrache les cheveux depuis maintenant une semaine sur un background worker. J'ai écumé Internet, et même acheté un bouquin à plus de 30€ ... aucun résultat, je n'arrive pas à faire tourner mon worker ... enfin si, mais la où ça coince c'est pour afficher la progression, rien ne fonctionne.

Un topo du code (partie de mon application)

- Je souhaite installer des logiciels en unattended
- Mon Form contient donc une progressbar et un label (indiquant en chiffre le pourcentage d'avancement de l'installation). Et un bouton pour lancer et annuler le background worker.

Tout fonctionne sauf la progression. Donc si quelqu'un peut me trouver l'erreur et m'aider à la résoudre, ce serait vraiment sympa. Comme dit plus haut j'ai essayé au moins 5 ou 6 méthodes différentes trouvées sur le net, et rien ne fonctionne.

Voici donc le code de ma Form :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
Imports Microsoft.Win32
Imports System.IO
Imports System.IO.File
Imports System.ComponentModel
 
Public Class Form3
 
    Const TMPCORBEILLE = "C:\TempCorbeille\"
    Const DOSSIERINSTAL = "C:\installexp\"
    Const DOCANDSETALLUSER = "C:\Documents and Settings\All Users\"
    Dim FAVORIS = "C:\Documents and Settings\" & Environment.UserName & "\Favoris\"
    Const MESSAGERIE = "C:\Messagerie\"
    Const DEPLOY_FAV = "\\servficg\deploysoftware$\installexp\favoris\"
    Const DEPLOY = "\\servficg\deploysoftware$\installexp\"
    Const DEPLOY_REG = "\\servficg\deploysoftware$\installexp\Outils\"
    Dim cheminUtilisateur = "C:\Documents and Settings\" & Environment.UserName & "\"
    Dim fichierExiste As Boolean
    Dim softName As String
 
    Private Sub installSoft_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles installSoft.DoWork
 
        Dim cle As RegistryKey
        Dim answer As MsgBoxResult
 
        ' ******************************** VERIFICATION DE LA PRESENCE DES FICHIERS D'INSTALLATION *************************************
        fichierExiste = True
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\cleartype\", nom:="cleartype.msi", logiciel:="ClearType")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\NetFramework4\", nom:="Setup.exe", logiciel:="NetFramework")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="directx.exe", logiciel:="DirectX")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="java.exe", logiciel:="Java")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="flashplayer.exe", logiciel:="FlashPlayer")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="shockwave.msi", logiciel:="Shockwave")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="realalt.exe", logiciel:="RealPlayer Alternative")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="silverlight.exe", logiciel:="Silverlight")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="quickalt.exe", logiciel:="QuickTime Alternative")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\VisualC++2005\", nom:="vcredist.msi", logiciel:="Visual C++ 2005")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\VisualC++2008\", nom:="install.exe", logiciel:="Visual C++ 2008")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\VisualC++2010\", nom:="setup.exe", logiciel:="Visual C++ 2010")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\IE8\", nom:="IE-REDIST.exe", logiciel:="Internet Explorer 8")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="acrobat10.1.exe", logiciel:="Acrobat Reader")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="7zip.exe", logiciel:="7-ZIP")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\irfanview\", nom:="i_view32.exe", logiciel:="IrfanView")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="FileZilla.exe", logiciel:="FileZilla")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="recuva.exe", logiciel:="Recuva")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="uvnc.exe", logiciel:="Ultra VNC")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\designreview\", nom:="design_review.msi", logiciel:="DesignReview")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="spybotsd.exe", logiciel:="Spybot S&D")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="pdfcreator.exe", logiciel:="PDFCreator")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\wmp11\", nom:="wmp11.exe", logiciel:="Windows Media Player 11")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\PageDefrag\", nom:="pagedfrg.exe", logiciel:="Page Defrag")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\eDrawings\", nom:="eDrawings.msi", logiciel:="eDrawings")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "installauto\", nom:="windx-6.30.exe", logiciel:="WindX")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_office\", nom:="visioviewer2010.exe", logiciel:="VisioViewer 2010")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "MOS\", nom:="CommunicatorVolume.msi", logiciel:="Communicator Volume")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "MOS\", nom:="Communicator.msp", logiciel:="Communicator")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "MOS\", nom:="LMSetup.exe", logiciel:="Live Meeting")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "MOS\", nom:="OnlineServicesSignIn-Fr.msi", logiciel:="SignIn")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "WS4\", nom:="WDS.exe", logiciel:="Windows Desktop Search")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_ie8\", nom:="majxp_IE8.exe", logiciel:="de MAJ de IE8")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "WS4\", nom:="WDS-KB940157.exe", logiciel:="de MAJ de Windows Desktop Search")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="mrxsmb.exe", logiciel:="de MAJ du module MRSMB de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="netapi32.exe", logiciel:="de MAj du module Netapi32 de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="shell32.exe", logiciel:="de MAj du Shell32 de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="msiexec.exe", logiciel:="de MAJ du module MSIEXEC de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="srv.sys.exe", logiciel:="de MAJ du module TSE de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="tcpip.exe", logiciel:="de MAJ de la couche TCP/IP de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="updspapi.exe", logiciel:="de MAJ du module updspapi de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="kernel32.exe", logiciel:="de MAJ du Kernel32 de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="lsass.exe", logiciel:="de MAJ du module lsass de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_xp\", nom:="IAS.exe", logiciel:="de MAj du module IAS de Windows")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_office\", nom:="office2007sp3.exe", logiciel:="de MAJ de Office 2007 au SP3")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_office\", nom:="office2007_1.exe", logiciel:="de MAJ d'Outlook 2007")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
        Call existeFichier(chemin:=DOSSIERINSTAL & "maj_office\", nom:="SaveAsPDF.exe", logiciel:="de MAJ d'Outlook 2007")
        If fichierExiste = False Then
            answer = MsgBox("Le fichier d'installation de " & softName & ". N'existe pas." & vbCrLf & " " & vbCrLf & "Veuillez résoudre le problème pour installer les logiciels", vbOKOnly + vbCritical, "erreur")
            If answer = vbOK Then
                End
            End If
        End If
 
        ' *********************************************  DEBUT DE L'INSTALLATION  *******************************************************
 
        'Installation de Cleartype
        Call software(chemin:="installauto\cleartype\cleartype.msi", silent:="/quiet", sleep:="1000", nom:="ClearType")
 
        'Installation de DirectX 9 (april 2011)
        'Call software(chemin:="installauto\directx.exe", silent:="/Q", sleep:="240000", nom:="DirectX")
 
        'Installation de JAVA 6.30
        Call software(chemin:="installauto\java.exe", silent:="/s /v /qn IEXPLORER=1 ADDLOCAL=ALL", sleep:="15000", nom:="JAVA")
 
        'Installation de Shockwave 11.5
        Call software(chemin:="installauto\shockwave.msi", silent:="/Q", sleep:="10000", nom:="Shockwave")
 
        'Installation de Real Alternative
        Call software(chemin:="installauto\realalt.exe", silent:="/verysilent", sleep:="10000", nom:="Real Alternative")
 
        'Installation de Flash Player 11.1
        Call software(chemin:="installauto\flashplayer.exe", silent:="-install", sleep:="10000", nom:="Flash Player")
 
        'Installation de Silverlight 5.0
        Call software(chemin:="installauto\silverlight.exe", silent:="/q", sleep:="15000", nom:="Silverlight")
 
        ' Installation de QuickTime 3.2
        Call software(chemin:="installauto\quickalt.exe", silent:="/verysilent /noicons", sleep:="10000", nom:="QuickTime")
 
        'Installation de Visual C++ 2005
        Call software(chemin:="installauto\VisualC++2005\vcredist.msi", silent:="/q /norestart", sleep:="20000", nom:="Visual C++ 2005")
 
        'Installation de Visual C++ 2008
        Call software(chemin:="Installauto\VisualC++2008\vd_red.msi", silent:="/q /norestart", sleep:="20000", nom:="Visual C++ 2008")
 
        'Installation de Visual C++ 2010
        Call software(chemin:="installauto\VisualC++2010\setup.exe", silent:="/q /norestart", sleep:="20000", nom:="Visual C++ 2010")
 
        'Installation de Internet Explorer 8
        Call software(chemin:="installauto\IE8\IE-REDIST.EXE", silent:="/quiet /passive /Update-no /norestart", sleep:="30000", nom:="IE8")
 
        'Installation de Acrobat Reader X
        Call software(chemin:="installauto\acrobat10.1.exe", silent:="/sAll /rs", sleep:="30000", nom:="Acrobat Reader X")
 
        'Installation de 7-zip
        Call software(chemin:="installauto\7zip.exe", silent:="/S /norestart", sleep:="10000", nom:="7-ZIP")
 
        'Installation de IrfanView
        Call software(chemin:="installauto\irfanview\irfanview.exe", silent:="/silent /desktop=0 /thumbs=0 /group=0 /allusers=0 /assoc=1", sleep:="10000", nom:="IrfanView")
 
        'Installation de Filezilla
        Call software(chemin:="installauto\Filezilla.exe", silent:="/S", sleep:="10000", nom:="FileZilla")
 
        'Installation de Recuva
        Call software(chemin:="installauto\recuva.exe", silent:="/S", sleep:="15000", nom:="Recuva")
 
        'Installation de Ultra VNC
        Call software(chemin:="installauto\uvnc.exe", silent:="/SP /VERYSILENT /NORESTART", sleep:="10000", nom:="Ultra VNC")
 
        'Installation de DesignReview
        Call software(chemin:="installauto\designreview\design_review.msi", silent:="/quiet", sleep:="60000", nom:="DesignReview")
 
        'Installation de Spybot S&D
        Call software(chemin:="installauto\spybotsd.exe", silent:="/verysilent /components='main' /noicons /norestart", sleep:="15000", nom:="Spybot S&D")
        Call software(chemin:="installauto\includes.exe", silent:="/S", sleep:="10000", nom:="BDD de Spybot S&D")
 
        'Installation de PDFCreator
        Call software(chemin:="installauto\pdfCreator.exe", silent:="/S", sleep:="20000", nom:="PDFCreator")
 
        'Installation de Erunt
        Call software(chemin:="installauto\erunt.exe", silent:="/verysilent /NORESTART", sleep:="5000", nom:="Erunt")
 
        'Installation de Windows Media Player 11
        Call software(chemin:="installauto\wmp11\wmp11.exe", silent:="/quiet /norestart", sleep:="60000", nom:="Windows Media Player")
 
        'Installation de PageDefrag
        My.Computer.FileSystem.CopyDirectory(DOSSIERINSTAL & "installauto\PageDefrag", "C:\Program Files\PageDefrag")
 
        'Installation de eDrawings 2010
        Call software(chemin:="installauto\eDrawings\eDrawings.msi", silent:="/quiet /norestart", sleep:="40000", nom:="eDrawings")
 
        'Installation de WindX 6.30
        Call software(chemin:="installauto\windx-6.30.exe", silent:="/s /v /qn", sleep:="20000", nom:="WindX")
 
        'Installation de Visioviewer 2010
        Call software(chemin:="maj_office\visioviewer2010.exe", silent:="/quiet", sleep:="30000", nom:="Visioviewer 2010")
 
        If RadioButton1.Checked = True Then
 
            'Installation de Microsoft Office Communicator
            Call software(chemin:="MOS\CommunicatorVolume.msi", silent:="REBOOT=ReallySupress", sleep:="30000", nom:="Office Communicator")
 
            'Installation de LiveMeeting
            Call software(chemin:="MOS\LMSetup.exe", silent:="", sleep:="20000", nom:="Live Meeting")
 
            'Installation de Sign-In
            Call software(chemin:="MOS\OnlineServicesSignIn-fr.msi", silent:="/quiet /norestart", sleep:="30000", nom:="Sign In")
 
            'Installation de Windows Desktop Search
            Call software(chemin:="WS4\WDS.exe", silent:="/quiet /norestart", sleep:="20000", nom:="Desktop Search")
 
            'Mise à jour de WDS
            Call software(chemin:="WS4\WDS-KB940157.exe", silent:="/quiet /norestart", sleep:="20000", nom:="MAJ Desktop Search")
 
            'Ajout de l'exception *.microsoftonline.com dans le proxy pour MOS
            cle = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\", True)
            cle.SetValue("ProxyOverride", "*.microsoftonline.com", RegistryValueKind.String)
            cle.Close()
 
            'Paramètrages de MOS
            cle = Registry.CurrentUser.OpenSubKey("Software\\Policies\\Microsoft\\Office\\12.0\\Common\\", False)
            cle.SetValue("DWNeverUpload", 1, RegistryValueKind.DWord)
            cle.Close()
            cle = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Communicator\\", False)
            cle.SetValue("AutoopenMainWindowWhenStartup", 0, RegistryValueKind.DWord)
            cle.Close()
 
        End If
 
        'Installation de la langue française pour IrfanView
        File.Delete("C:\Program Files\irfanview\Languages\IP_French.lng")
        File.Delete("C:\Program Files\irfanview\i_view32.ini")
        My.Computer.FileSystem.CopyFile(DOSSIERINSTAL & "installauto\irfanview\IP_French.lng", "C:\Program Files\irfanview\Languages\IP_French.lng")
        My.Computer.FileSystem.CopyFile(DOSSIERINSTAL & "installauto\irfanview\French1.dll", "C:\Program Files\irfanview\Languages\French1.dll")
        My.Computer.FileSystem.CopyFile(DOSSIERINSTAL & "installauto\irfanview\French2.dll", "C:\Program Files\irfanview\Languages\French2.dll")
        My.Computer.FileSystem.CopyFile(DOSSIERINSTAL & "installauto\irfanview\i_view32.ini", "C:\Program Files\irfanview\i_view32.ini")
 
        '///////////////////////////////////////////  MISES A JOUR WINDOWS ET OFFICE  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 
        'Mise à jour de IE8
        Call software(chemin:="maj_ie8\majxp_IE8.exe", silent:="/quiet /norestart", sleep:="30000", nom:="MAJ IE8")
 
        'Mise à jour MRXSMB
        Call software(chemin:="maj_xp\mrsmb.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ MRXSMB")
 
        'Mise à jour NETAPI32
        Call software(chemin:="maj_xp\netapi32.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ NETAPI32")
 
        'Mise à jour SHELL32
        Call software(chemin:="maj_xp\shell32.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ SHELL32")
 
        'Mise à jour de MSIEXEC
        Call software(chemin:="maj_xp\msiexec.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ MSIEXEC")
 
        'Mise à jour SRV.SYS
        Call software(chemin:="maj_xp\srv.sys.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ SRV.SYS")
 
        'Mise à jour TCP/IP
        Call software(chemin:="maj_xp\tcpip.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ TCP/IP")
 
        'Mise à jour UPDSPAPI
        Call software(chemin:="maj_xp\updspapi.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ UPDSPAPI")
 
        'Mise à jour KERNEL32
        Call software(chemin:="maj_xp\kernel32.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ Kernel32")
 
        'Mise à jour LSASS
        Call software(chemin:="maj_xp\lsass.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ LSASS")
 
        'Mise à jour IAS
        Call software(chemin:="maj_xp\IAS.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ IAS")
 
        'Mise à jour de Office 2007 vers SP3
        Call software(chemin:="maj_office\office2007sp3.exe", silent:="/quiet /norestart", sleep:="15000", nom:="SP3 pour Office 2007")
 
        'Mise à jour de Office avec SaveAsPDF
        Call software(chemin:="maj_office\SaveAsPDF.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ SaveAsPDF pour Office 2007")
 
        'Mise à jour de Outlook 2007_1
        Call software(chemin:="maj_office\office2007_1.exe", silent:="/quiet /norestart", sleep:="15000", nom:="MAJ Outlook 2007")
 
        ' **********************************************  FIN DE L'INSTALLATION  ********************************************************
 
    End Sub
 
    Private Sub installSoft_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles installSoft.RunWorkerCompleted
 
        If e.Cancelled Then
            MsgBox("Opération annulée par l'utilisateur", vbOKOnly + vbExclamation, "Opération annulée")
        Else
            'Changement de l'icône GPAO ATOS
            File.Copy(DOSSIERINSTAL & "icons\AtosLogoIcone.ico", "C:\Program Files\Best\AtosLogoIcone.ico")
 
            'Fin de l'installation
            Dim notif As MsgBoxResult
            Dim fininstall As MsgBoxResult
            Label2.Text = "Terminé !"
            fininstall = MsgBox("L'installation des logiciels s'est déroulée correctement !" + vbCr + " " + vbCr + "L'ordinateur va maintenant redémarrer.", vbOKOnly + vbInformation, "Installation terminée")
            If fininstall = vbOK Then
                notif = MsgBox("INFO :" & vbCrLf & " " & vbCrLf & "Pensez à installer Kaspersky !", vbOKOnly + vbInformation, "Information")
                If notif = vbOK Then
                    System.Diagnostics.Process.Start("shutdown", "-r -f -t 0")
                End If
            End If
            installSoft.Dispose()
        End If
 
    End Sub
 
    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        'Action a entreprendre lors du clic sur le bouton selon son état
        If Button1.Text = "Démarrer" Then
            Button1.Text = "Annuler"
            installSoft.WorkerReportsProgress = True
            installSoft.WorkerSupportsCancellation = True
            installSoft.RunWorkerAsync()
        Else
            If Button1.Text = "Annuler" Then
                Me.Hide()
                installSoft.CancelAsync()
                Me.Close()
            End If
        End If
 
    End Sub
 
    Private Sub installSoft_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles installSoft.ProgressChanged
        'On incrémentela progressbar et on répercute sur le label pour l'afficher en chiffres
        ProgressBar1.Value = e.ProgressPercentage
        Label2.Text = e.ProgressPercentage.ToString() & "%"
 
    End Sub
 
    Public Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        'On précoche la réponse "OUI" à la question de l'installation de MOS, pour éviter les oublis ou erreurs
        RadioButton1.Checked = True
        'On initialise la progressbar
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = 100
        ProgressBar1.Value = 0
 
 
    End Sub
 
    Public Sub software(ByVal chemin As String, ByVal silent As String, ByVal sleep As Integer, ByVal nom As String)
        'Installation des logiciels
 
        Dim form3 As New Form3
        Dim cmd As String
        Const DOSSIERINSTAL = "C:\installexp\"
 
        cmd = DOSSIERINSTAL & chemin
        System.Diagnostics.Process.Start(cmd, silent)
        System.Threading.Thread.Sleep(sleep)
 
    End Sub
 
    Public Function existeFichier(ByVal chemin As String, ByVal nom As String, ByVal logiciel As String)
        'Vérification des fichiers d'installation
 
        'Dim reponse As MsgBoxResult
        softName = logiciel
        If Exists(chemin & nom) = False Then
            fichierExiste = False
        End If
        Return fichierExiste
    End Function
 
    ' Le delegate
    Delegate Sub SetLabelText_Delegate(ByVal [Label] As Label, ByVal [text] As String)
 
    ' Routine du delegate
    Private Sub SetLabelText_ThreadSafe(ByVal [Label] As Label, ByVal [text] As String)
 
        If [Label].InvokeRequired Then
            Dim MyDelegate As New SetLabelText_Delegate(AddressOf SetLabelText_ThreadSafe)
            Me.Invoke(MyDelegate, New Object() {[Label], [text]})
        Else
            [Label].Text = [text]
        End If
    End Sub
 
End Class
Il y a un delegate à la fin, j'ai trouvé ça sur un site, ce qui devait normalement permettre d'accéder au label et progressbar depuis un autre thread que celui dans lequel ils se trouvent.

Désolé si le code n'est pas encore optimisé, mais je débute et c'est un premier jet. Si tout fonctionne après, je m'occuperai de la phase d'optimisation.

Merci d'avance à ceux qui auront le courage de tout lire !

Bonne journée