@@ -683,17 +683,25 @@ impl Update {
683
683
let install_mode = self . config . install_mode ( ) ;
684
684
let current_args = & self . current_exe_args ( ) [ 1 ..] ;
685
685
let msi_args;
686
+ let nsis_args;
686
687
687
688
let installer_args: Vec < & OsStr > = match & updater_type {
688
- WindowsUpdaterType :: Nsis { .. } => install_mode
689
- . nsis_args ( )
690
- . iter ( )
691
- . map ( OsStr :: new)
692
- . chain ( once ( OsStr :: new ( "/UPDATE" ) ) )
693
- . chain ( once ( OsStr :: new ( "/ARGS" ) ) )
694
- . chain ( current_args. to_vec ( ) )
695
- . chain ( self . installer_args ( ) )
696
- . collect ( ) ,
689
+ WindowsUpdaterType :: Nsis { .. } => {
690
+ nsis_args = current_args
691
+ . iter ( )
692
+ . map ( escape_nsis_current_exe_arg)
693
+ . collect :: < Vec < _ > > ( ) ;
694
+
695
+ install_mode
696
+ . nsis_args ( )
697
+ . iter ( )
698
+ . map ( OsStr :: new)
699
+ . chain ( once ( OsStr :: new ( "/UPDATE" ) ) )
700
+ . chain ( once ( OsStr :: new ( "/ARGS" ) ) )
701
+ . chain ( nsis_args. iter ( ) . map ( OsStr :: new) )
702
+ . chain ( self . installer_args ( ) )
703
+ . collect ( )
704
+ }
697
705
WindowsUpdaterType :: Msi { path, .. } => {
698
706
let escaped_args = current_args
699
707
. iter ( )
@@ -1363,6 +1371,21 @@ impl PathExt for PathBuf {
1363
1371
}
1364
1372
}
1365
1373
1374
+ #[ cfg( windows) ]
1375
+ fn escape_nsis_current_exe_arg ( arg : & & OsStr ) -> String {
1376
+ let mut arg = dbg ! ( arg. to_string_lossy( ) . to_string( ) ) ;
1377
+
1378
+ /* if arg.contains('"') {
1379
+ arg = arg.replace('"', r#""""#);
1380
+ } */
1381
+
1382
+ if arg. contains ( ' ' ) || arg. contains ( '\t' ) || arg. contains ( '/' ) {
1383
+ arg = format ! ( "\" {arg}\" " ) ;
1384
+ }
1385
+
1386
+ arg
1387
+ }
1388
+
1366
1389
#[ cfg( windows) ]
1367
1390
fn escape_msi_property_arg ( arg : impl AsRef < OsStr > ) -> String {
1368
1391
let mut arg = arg. as_ref ( ) . to_string_lossy ( ) . to_string ( ) ;
@@ -1375,7 +1398,7 @@ fn escape_msi_property_arg(arg: impl AsRef<OsStr>) -> String {
1375
1398
}
1376
1399
1377
1400
if arg. contains ( '"' ) {
1378
- arg = arg. replace ( '"' , r#""""""# )
1401
+ arg = arg. replace ( '"' , r#""""""# ) ;
1379
1402
}
1380
1403
1381
1404
if arg. starts_with ( '-' ) {
0 commit comments