本文整理汇总了Python中wubi.backends.common.utils.join_path函数的典型用法代码示例。如果您正苦于以下问题:Python join_path函数的具体用法?Python join_path怎么用?Python join_path使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了join_path函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: expand_diskimage
def expand_diskimage(self, associated_task=None):
# TODO: might use -p to get percentage to feed into progress.
root = join_path(self.info.disks_dir, 'root.disk')
resize2fs = join_path(self.info.bin_dir, 'resize2fs.exe')
resize_cmd = [resize2fs, '-f', root,
'%dM' % self.info.root_size_mb]
run_command(resize_cmd)
示例2: modify_bootini
def modify_bootini(self, drive, associated_task):
log.debug("modify_bootini %s" % drive.path)
bootini = join_path(drive.path, 'boot.ini')
if not os.path.isfile(bootini):
log.debug("Could not find boot.ini %s" % bootini)
return
src = join_path(self.info.root_dir, 'winboot', 'wubildr')
dest = join_path(drive.path, 'wubildr')
shutil.copyfile(src, dest)
src = join_path(self.info.root_dir, 'winboot', 'wubildr.mbr')
dest = join_path(drive.path, 'wubildr.mbr')
shutil.copyfile(src, dest)
run_command(['attrib', '-R', '-S', '-H', bootini])
boot_line = 'C:\wubildr.mbr = "%s"' % self.info.distro.name
old_line = boot_line[:boot_line.index("=")].strip().lower()
# ConfigParser gets confused by the ':' and changes the options order
content = read_file(bootini)
if content[-1] != '\n':
content += '\n'
lines = content.split('\n')
is_section = False
for i,line in enumerate(lines):
if line.strip().lower() == "[operating systems]":
is_section = True
elif line.strip().startswith("["):
is_section = False
if is_section and line.strip().lower().startswith(old_line):
lines[i] = boot_line
break
if is_section and not line.strip():
lines.insert(i, boot_line)
break
content = '\n'.join(lines)
write_file(bootini, content)
run_command(['attrib', '+R', '+S', '+H', bootini])
示例3: modify_configsys
def modify_configsys(self, drive, associated_task):
log.debug("modify_configsys %s" % drive.path)
configsys = join_path(drive.path, 'config.sys')
if not os.path.isfile(configsys):
return
src = join_path(self.info.root_dir, 'winboot', 'wubildr.exe')
dest = join_path(drive.path, 'wubildr.exe')
shutil.copyfile(src, dest)
run_command(['attrib', '-R', '-S', '-H', configsys])
config = read_file(configsys)
if 'REM WUBI MENU START\n' in config:
log.debug("Configsys has already been modified")
return
config += '''
REM WUBI MENU START
[menu]
menucolor=15,0
menuitem=windows,Windows
menuitem=wubildr,$distro
menudefault=windows,10
[wubildr]
device=wubildr.exe
[windows]
REM WUBI MENU END
'''
write_file(configsys, config)
run_command(['attrib', '+R', '+S', '+H', configsys])
示例4: undo_bcd
def undo_bcd(self, associated_task):
bcdedit = join_path(os.getenv('SystemDrive'), 'bcdedit.exe')
if not isfile(bcdedit):
bcdedit = join_path(os.getenv('SystemRoot'), 'sysnative', 'bcdedit.exe')
if not os.path.isfile(bcdedit):
bcdedit = join_path(os.environ['systemroot'], 'System32', 'bcdedit.exe')
if not os.path.isfile(bcdedit):
log.error("Cannot find bcdedit")
return
id = registry.get_value(
'HKEY_LOCAL_MACHINE',
self.info.registry_key,
'VistaBootDrive')
if not id:
log.debug("Could not find bcd id")
return
log.debug("Removing bcd entry %s" % id)
command = [bcdedit, '/delete', id , '/f']
try:
run_command(command)
registry.set_value(
'HKEY_LOCAL_MACHINE',
self.info.registry_key,
'VistaBootDrive',
"")
except Exception, err: #this shouldn't be fatal
log.error(err)
示例5: select_target_dir
def select_target_dir(self):
target_dir = join_path(self.info.target_drive.path, self.info.distro.installation_dir)
target_dir.replace(' ', '_')
target_dir.replace('__', '_')
if os.path.exists(target_dir):
raise Exception("Cannot install into %s.\nThere is another file or directory with this name.\nPlease remove it before continuing." % target_dir)
self.info.target_dir = target_dir
log.info('Installing into %s' % target_dir)
self.info.icon = join_path(self.info.target_dir, self.info.distro.name + '.ico')
示例6: uncompress_files
def uncompress_files(self, associated_task):
if self.info.target_drive.is_fat():
return
command1 = ['compact', join_path(self.info.install_boot_dir), '/U', '/A', '/F']
command2 = ['compact', join_path(self.info.install_boot_dir,'*.*'), '/U', '/A', '/F']
for command in [command1,command2]:
log.debug(" ".join(command))
try:
run_command(command)
except Exception, err:
log.error(err)
示例7: extract_file_from_iso
def extract_file_from_iso(self, iso_path, file_path, output_dir=None, overwrite=True):
'''
platform specific
'''
log.debug("extracting %s from %s" % (file_path, iso_path))
if not iso_path or not os.path.exists(iso_path):
raise Exception('Invalid path %s' % iso_path)
iso_path = abspath(iso_path)
file_path = os.path.normpath(file_path)
if not output_dir:
output_dir = tempfile.gettempdir()
output_file = join_path(output_dir, os.path.basename(file_path))
log.debug("output_file === %s" %output_file)
if os.path.exists(output_file):
if overwrite:
os.unlink(output_file)
else:
raise Exception('Cannot overwrite %s' % output_file)
command = [self.info.iso_extractor, 'e', '-i!' + file_path, '-o' + output_dir, iso_path]
log.debug("command === %s" % command)
try:
output = run_command(command)
except Exception, err:
log.exception(err)
output_file = None
示例8: create_uninstaller
def create_uninstaller(self, associated_task):
uninstaller_name = 'uninstall.exe'
uninstaller_name.replace(' ', '_')
uninstaller_name.replace('__', '_')
uninstaller_path = join_path(self.info.target_dir, uninstaller_name)
if self.info.run_task == "cd_boot":
display_name = self.info.distro.name + _(" LiveCD")
elif self.info.flag:
display_name = self.info.distro.name
else:
display_name = self.info.distro.name + _(" LiveCD")
#display_name = self.info.flag and self.info.distro.name or self.info.distro.name + _(" LiveCD")
if os.path.splitext(self.info.original_exe)[-1] == '.exe':
log.debug('Copying uninstaller %s -> %s' % (self.info.original_exe, uninstaller_path))
shutil.copyfile(self.info.original_exe, uninstaller_path)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'UninstallString', uninstaller_path)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'InstallationDir', self.info.target_dir)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'DisplayName', display_name)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'DisplayIcon', self.info.icon)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'DisplayVersion', self.info.version_revision)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'Publisher', "www.startos.org")
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'URLInfoAbout', self.info.distro.website)
registry.set_value('HKEY_LOCAL_MACHINE', self.info.registry_key, 'HelpLink', self.info.distro.support)
示例9: create_virtual_disks
def create_virtual_disks(self, associated_task):
self.info.disks_dir
for disk in ["root", "home", "usr", "swap"]:
path = join_path(self.info.disks_dir, disk + ".disk")
size_mb = int(getattr(self.info, disk + "_size_mb"))
if size_mb:
create_virtual_disk(path, size_mb)
示例10: select_target_dir
def select_target_dir(self):
target_dir = join_path(self.info.target_drive.path, self.info.distro.installation_dir)
target_dir.replace(' ', '_')
target_dir.replace('__', '_')
gold_target_dir = target_dir
#if os.path.exists(target_dir):
# raise Exception("Cannot install into %s.\nThere is another file or directory with this name.\nPlease remove it before continuing." % target_dir)
if self.info.run_task == "cd_boot":
self.info.target_dir = target_dir+"-livecd"
elif self.info.flag:
self.info.target_dir = target_dir+"-loop"
else:
self.info.target_dir = target_dir+"-livecd"
#self.info.target_dir = self.info.flag and target_dir+"-loop" or target_dir+"-livecd"
log.info('Installing into %s' % self.info.target_dir)
self.info.icon = join_path(self.info.target_dir, self.info.distro.name + '.ico')
示例11: undo_bootini
def undo_bootini(self, drive, associated_task):
log.debug("undo_bootini %s" % drive.path)
bootini = join_path(drive.path, 'boot.ini')
if not os.path.isfile(bootini):
return
run_command(['attrib', '-R', '-S', '-H', bootini])
remove_line_in_file(bootini, 'c:\wubildr.mbr', ignore_case=True)
run_command(['attrib', '+R', '+S', '+H', bootini])
示例12: copy_installation_files
def copy_installation_files(self, associated_task):
self.info.custominstall = join_path(self.info.install_dir, 'custom-installation')
log.debug("custominstall === %s" %self.info.custominstall)
src = join_path(self.info.data_dir, 'custom-installation')
dest = self.info.custominstall
log.debug('Copying %s -> %s' % (src, dest))
if os.path.exists(dest):
shutil.rmtree(dest)
shutil.copytree(src, dest)
src = join_path(self.info.root_dir, 'winboot')
if isdir(src): # make runpy will fail otherwise as winboot will not be there
dest = join_path(self.info.target_dir, 'winboot')
log.debug('Copying %s -> %s' % (src, dest))
if os.path.exists(dest):
shutil.rmtree(dest)
shutil.copytree(src, dest)
dest = join_path(self.info.custominstall, 'hooks', 'failure-command.sh')
msg=_('The installation failed. Logs have been saved in: %s.' \
'\n\nNote that in verbose mode, the logs may include the password.' \
'\n\nThe system will now reboot.')
msg = msg % join_path(self.info.install_dir, 'installation-logs.zip')
msg = "msg=\"%s\"" % msg
msg = str(msg.encode('utf8'))
replace_line_in_file(dest, 'msg=', msg)
src = join_path(self.info.image_dir, self.info.distro.name + '.ico')
dest = self.info.icon
log.debug('Copying %s -> %s' % (src, dest))
shutil.copyfile(src, dest)
示例13: backup_iso
def backup_iso(self, associated_task=None):
if not self.info.backup_iso:
return
backup_dir = self.info.previous_target_dir + "-backup"
install_dir = join_path(self.info.previous_target_dir, "install")
for f in os.listdir(install_dir):
f = join_path(install_dir, f)
if f.endswith('.iso') and os.path.isfile(f) \
and os.path.getsize(f) > 1000000:
log.debug("Backing up %s -> %s" % (f, backup_dir))
if not isdir(backup_dir):
if isfile(backup_dir):
log.error("The backup directory %s is a file, skipping ISO backup" % backup_dir)
#TBD do something more sensible
return
os.mkdir(backup_dir)
target_path = join_path(backup_dir, os.path.basename(f))
shutil.move(f, target_path)
示例14: get_windows_user_dir
def get_windows_user_dir(self):
homedrive = os.getenv('homedrive')
homepath = os.getenv('homepath')
user_directory = ""
if homedrive and homepath:
user_directory = join_path(homedrive, homepath)
user_directory = user_directory.decode('ascii', 'ignore')
log.debug('user_directory=%s' % user_directory)
return user_directory
示例15: diskimage_bootloader
def diskimage_bootloader(self, associated_task=None):
src = join_path(self.info.root_dir, 'winboot')
dest = join_path(self.info.target_dir, 'winboot')
if isdir(src):
log.debug('Copying %s -> %s' % (src, dest))
shutil.copytree(src, dest)
src = join_path(self.info.disks_dir, 'wubildr')
shutil.copyfile(src, join_path(dest, 'wubildr'))
# Overwrite the copy that's in root_dir.
for drive in self.info.drives:
if drive.type not in ('removable', 'hd'):
continue
dest = join_path(drive.path, 'wubildr')
try:
shutil.copyfile(src, dest)
except: # don't need to worry about failure here
pass
os.unlink(src)