@@ -659,24 +659,12 @@ def make_output_dirs(self):
659659
660660 output_dir = utils .path_join (self .output_dir (), self .project_name ())
661661 if os .path .exists (output_dir ):
662- try :
663- utils .rmtree (output_dir )
664- except OSError as e :
665- error = u'Failed to remove output directory: {}.' .format (output_dir )
666- error += '\n Error recieved: {}' .format (e )
667- self .logger .error (error )
668- self .output_err += error
662+ utils .rmtree (output_dir , onerror = self .remove_readonly )
669663
670664 temp_dir = utils .path_join (TEMP_DIR , 'webexectemp' )
671665
672666 if os .path .exists (temp_dir ):
673- try :
674- utils .rmtree (temp_dir )
675- except OSError as e :
676- error = u'Failed to remove temporary directory: {}.' .format (temp_dir )
677- error += '\n Error recieved: {}' .format (e )
678- self .logger .error (error )
679- self .output_err += error
667+ utils .rmtree (temp_dir , onerror = self .remove_readonly )
680668
681669 self .progress_text = 'Making new directories...\n '
682670
@@ -817,13 +805,7 @@ def make_output_dirs(self):
817805 self .logger .error (error )
818806 self .output_err += error
819807 finally :
820- try :
821- utils .rmtree (temp_dir )
822- except OSError as e :
823- error = u'Failed to remove temporary directory: {}.' .format (temp_dir )
824- error += '\n Error recieved: {}' .format (e )
825- self .logger .error (error )
826- self .output_err += error
808+ utils .rmtree (temp_dir , onerror = self .remove_readonly )
827809
828810 def make_desktop_file (self , nw_path , export_dest ):
829811 icon_set = self .get_setting ('icon' )
@@ -902,6 +884,16 @@ def compress_nw(self, nw_path):
902884 time .sleep (2 )
903885 output , err = proc .communicate ()
904886
887+ def remove_readonly (self , action , name , exc ):
888+ try :
889+ os .chmod (name , stat .S_IWRITE )
890+ os .remove (name )
891+ except Exception as e :
892+ error = u'Failed to remove file: {}.' .format (name )
893+ error += '\n Error recieved: {}' .format (e )
894+ self .logger .error (error )
895+ self .output_err += error
896+
905897 def copy_files_to_project_folder (self ):
906898 old_dir = CWD
907899 os .chdir (self .project_dir ())
0 commit comments