⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 installer.py

📁 linux下的一款播放器
💻 PY
字号:
# ***** BEGIN LICENSE BLOCK *****# Source last modified: $Id: installer.py,v 1.2.2.4 2004/07/09 02:02:53 hubbe Exp $# # Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.# # The contents of this file, and the files included with this file,# are subject to the current version of the RealNetworks Public# Source License (the "RPSL") available at# http://www.helixcommunity.org/content/rpsl unless you have licensed# the file under the current version of the RealNetworks Community# Source License (the "RCSL") available at# http://www.helixcommunity.org/content/rcsl, in which case the RCSL# will apply. You may also obtain the license terms directly from# RealNetworks.  You may not use this file except in compliance with# the RPSL or, if you have a valid RCSL with RealNetworks applicable# to this file, the RCSL.  Please see the applicable RPSL or RCSL for# the rights, obligations and limitations governing use of the# contents of the file.# # Alternatively, the contents of this file may be used under the# terms of the GNU General Public License Version 2 or later (the# "GPL") in which case the provisions of the GPL are applicable# instead of those above. If you wish to allow use of your version of# this file only under the terms of the GPL, and not to allow others# to use your version of this file under the terms of either the RPSL# or RCSL, indicate your decision by deleting the provisions above# and replace them with the notice and other provisions required by# the GPL. If you do not delete the provisions above, a recipient may# use your version of this file under the terms of any one of the# RPSL, the RCSL or the GPL.# # This file is part of the Helix DNA Technology. RealNetworks is the# developer of the Original Code and owns the copyrights in the# portions it created.# # This file, and the files included with this file, is distributed# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET# ENJOYMENT OR NON-INFRINGEMENT.# # Technology Compatibility Kit Test Suite(s) Location:#    http://www.helixcommunity.org/content/tck# # Contributor(s):# # ***** END LICENSE BLOCK *****# Installer: installer base class. Contains methods for manipulating# the temp install dir and making the archive and installer#######################################################################execfile(os.path.join(project.inst_script_dir, "defines.py"))class Installer:    #######################################################################    # Constructor: tempdir is the name of the temp install directory    def __init__(self):        self.tempdir = "temp"        self.archive_info_header = "archive_info.h"        self.inst_output_dir = project.output_dir        self.module_output_dir = project.output_dir        self.include_archive_prog = 0        self.stage1_name = "stage1"        self.installer_name = None        self.product_name = None        self.version = None        # XXXJDG this should be in a project variable somewhere        if (project.BuildOption("release")):            self.copy_dir = os.path.join(project.src_root_path, "release")        else:            self.copy_dir = os.path.join(project.src_root_path, "debug")    #######################################################################    # CreateMainDir: creates the main temp install directory, removing     # the existing copy if there is one.    def CreateMainDir(self):        project.writeln("all:")        # create temp directory and subdirectories        project.writeln(            "\t@echo \"==== creating temporary directory \'" + self.tempdir + \            "\' ====\"")        project.writeln("\t" + platform.rmdir.cmd + " " + self.tempdir)        project.writeln("\t" + platform.mkdir.execute(self.tempdir))    #######################################################################    # MakeDir: creates a subdirectory of the install directory    def MakeDirs(self, *dirs):        for dir in dirs:            self.MakeDir(dir)    def MakeDir(self, subdir):        if(subdir == ""):            subdir_path = self.tempdir        else:            subdir_path = os.path.join(self.tempdir, self.NativePath(subdir))        project.writeln("\t" + platform.mkdir.execute(subdir_path))    #######################################################################    # CopyFile: copies file(s) from source_path to dest_path in the install    # directory. Can include wildcards.    def CopyFiles(self, *files):        for file in files:            self.CopyFile(file[0], file[1])    def CopyMultiFiles(self, source, dest, *files):        for file in files:            self.CopyFile(os.path.join(source, file), os.path.join(dest, file))    def CopyFile(self, source, dest):        # dest_path is a subdirectory of the temp dir        if (dest == ""):            destfull = self.tempdir        else:            destfull = os.path.join(self.tempdir, self.NativePath(dest))        # write the copy command        project.writeln("\t" + platform.copy.cmd + " " + \            self.NativePath(source) + " " + destfull)    #######################################################################    # CopyModuleFile: copies file(s) from source_path in the source root     # to dest_path in the install directory.    def CopyModuleFiles(self, *files):        for file in files:            self.CopyModuleFile(file[0], file[1])    def CopyModuleFile(self, source, dest):        self.CopyFile(os.path.join(project.src_root_path, source), dest)    #######################################################################    # CopyModuleBuildFile: copies a file from a module's output directory    def CopyModuleBuildFiles(self, *files):        for file in files:            self.CopyModuleBuildFile(file[0], file[1], file[2])    def CopyModuleBuildFile(self, module, source, dest):        source_file = os.path.join(project.src_root_path, module,                 self.module_output_dir, source)        if not os.path.exists(source_file):            source_file = os.path.join(project.src_root_path, module, source)        self.CopyFile(source_file, dest)    #######################################################################    # CopyModuleExe: copies an executable, with appropriate extension    def CopyModuleExes(self, *exes):        for exe in exes:            self.CopyModuleExe(exe[0], exe[1], exe[2])    def CopyModuleExe(self, module, source, dest):        self.CopyModuleBuildFile(module, self.GetExeName(source),            self.GetExeName(dest))    #######################################################################    # CopyInstallerExe: copies an installer exe, with appropriate extension    def CopyInstallerExes(self, *exes):        for exe in exes:            self.CopyInstallerExe(exe[0], exe[1], exe[2])    def CopyInstallerExe(self, module, source, dest):                self.CopyFile(os.path.join(project.src_root_path, module,            self.inst_output_dir, self.GetExeName(source)),            self.GetExeName(dest))    def GetExeName(self, file):        if (platform.exe_suffix == ""):            return file        else:            return file + "." + platform.exe_suffix    #######################################################################    # CopyModuleDll: copies a dll, with appropriate extension    def CopyModuleDlls(self, *dlls):        for dll in dlls:            self.CopyModuleDll(dll[0], dll[1], dll[2])    def CopyModuleDll(self, module, source, dest):        self.CopyModuleBuildFile(module, self.GetDllName(source),             self.GetDllName(dest))    def GetDllName(self, file):        if (platform.dll_suffix == ""):            return file        else:            return file + "." + platform.dll_suffix            #######################################################################    # CopyModuleLib: copies a library, with appropriate extension    def CopyModuleLibs(self, *libs):        for lib in libs:            self.CopyModuleLib(lib[0], lib[1], lib[2])    def CopyModuleLib(self, module, source, dest):        self.CopyModuleBuildFile(module, self.GetLibName(source),             self.GetLibName(dest))    def GetLibName(self, file):        if (platform.library_suffix == ""):            return file        else:            return file + "." + platform.library_suffix            #######################################################################    # CleanupTempdir: finishes off the makefile ...    def CleanupTempdir(self):        project.writeln("copy:")        project.writeln("depend:")        project.writeln("clean:")        project.writeln("\t" + platform.rmdir.cmd + " " + self.tempdir)        project.writeln("")    #######################################################################    # SetArchiveType: sets the archive type    def SetArchiveType(self, archive_type):        self.archive_type = archive_type        if (self.archive_type == "bz2"):            self.archive_prog = os.path.join(project.bzip2_path,                self.inst_output_dir, "bzip2")    #######################################################################    # CleanTempFiles: clean up temp files    def CleanTempFiles(self):        project.writeln("\t%s %s" % (platform.rmdir.cmd, self.tempdir))        project.writeln("\t%s %s" % (platform.rm.cmd, self.archive_file))    #######################################################################    # MakeCleanTemp: creates the cleaup makefile, to cleanup temp files    def MakeCleanTemp(self):        project.writeln("all:")        project.writeln("\t@echo ==== removing temp files ====")        self.CleanTempFiles()        project.writeln("depend::")        project.writeln("")        project.writeln("copy::")        project.writeln("")        project.writeln("clean::")        self.CleanTempFiles()        project.writeln("")    #######################################################################    # MakeInstaller: Writes the makefile to create the final installer.    # Combines stage1 app with archive and (if necessary) the archive prog.    def MakeInstaller(self, stage1_path = None):        return            #######################################################################    # SetVersionFromFile: set the product version from a .ver file    def SetVersionFromFile(self, verfile):        # we need to strip the .ver extension, because get_version()        # automatically adds it for us        if verfile[-4:] == ".ver":            verfile = verfile[:-4]        try:            self.version = platform.versioning.get_version(verfile,"")        except:            project.warn("unable to read version file %s.ver" % verfile)    #######################################################################    # SetInstallerName: come up with a uniform installer name that    # incorporates the name, system id and version info    def SetInstallerName(self, name = None, verfile = None):        # default: no version string        verstr = ""        if verfile:            self.SetVersionFromFile(verfile)        verstr = "-%s.%s.%s.%s" % self.version        if not name:            name = self.product_name        if platform.type == "unix":            ext = "bin"        else:            ext = "exe"        self.installer_name = "%s%s-%s.%s" % (name, verstr, sysinfo.id, ext)    #######################################################################    # CopyArchive: copy the archive target to the debug or release dir    # incorporates the name, system id and version info    def CopyArchive(self, name = None, verfile = None):        # default: no version string        verstr = ""        if verfile:            self.SetVersionFromFile(verfile)        verstr = "-%s.%s.%s.%s" % self.version                   if not name:            name = self.product_name        if self.archive_type == "bz2":            ext = "tar.bz2"        else:            ext = self.archive_type        dest_arch = "%s%s-%s.%s" % (name, verstr, sysinfo.id, ext)        project.writeln("copy:")        project.writeln("\t %s %s %s" %                        (platform.copy.cmd, self.archive_file,                         os.path.join(project.target_dir, dest_arch)))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -