From 001c4fea412e59d7f316ac57c7ff06103c207637 Mon Sep 17 00:00:00 2001 From: Aikes Date: Wed, 18 Nov 2015 15:50:23 +0800 Subject: [PATCH 1/5] [*] .gitignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --------------------------- [+]:新增 [-]:刪除 [*]:修正 [~]:異動 --- .gitignore | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index c81b8776..83b50794 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -.pyc -.pyo +*.pyc +*.pyo .exe .settings .spyderproject @@ -19,3 +19,5 @@ MANIFEST Thumbs.db *~ *.swp +.gitignore +basedir*/ From 002e0d28d41d4d5ccd85bc718e0e96519956f58b Mon Sep 17 00:00:00 2001 From: Aikes Date: Wed, 18 Nov 2015 15:53:41 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[~]=20=E6=94=B9=E6=88=90Unicode=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E4=BD=BF=E7=94=A8Unicode=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=B7=A8=E8=AD=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --------------------------- [+]:新增 [-]:刪除 [*]:修正 [~]:異動 --- portable/installer.nsi | 2 +- portable/launcher.nsi | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/portable/installer.nsi b/portable/installer.nsi index 6e5e7764..4e26f616 100644 --- a/portable/installer.nsi +++ b/portable/installer.nsi @@ -74,7 +74,7 @@ SectionEnd ;------------------------------------------------------------------------------ Function .onInit ; Check if an instance of this installer is already running - System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${ID}") i .r1 ?e' + System::Call 'kernel32::CreateMutex(i 0, i 0, t "${ID}") i .r1 ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION "Installer is already running." diff --git a/portable/launcher.nsi b/portable/launcher.nsi index 8eacaf90..b95b379a 100644 --- a/portable/launcher.nsi +++ b/portable/launcher.nsi @@ -92,14 +92,14 @@ workdir: SetOutPath "${WORKDIR}" end_workdir: -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("WINPYDIR", "${WINPYDIR}").r0' -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("WINPYVER", "${WINPYVER}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("WINPYDIR", "${WINPYDIR}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("WINPYVER", "${WINPYVER}").r0' ; Addition of R_HOME Environment Variable if %R_Home%\bin exists StrCmp "${R_HOME}" "" end_Rsettings IfFileExists "${R_HOME}\bin\*.*" 0 end_Rsettings -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("R_HOME", "${R_HOME}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("R_HOME", "${R_HOME}").r0' end_Rsettings: @@ -107,36 +107,36 @@ end_Rsettings: StrCmp "${JULIA}" "" end_Julia_settings IfFileExists "${JULIA}" 0 end_Julia_settings -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("JULIA", "${JULIA}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("JULIA", "${JULIA}").r0' StrCmp "${JULIA_HOME}" "" end_Julia_settings IfFileExists "${JULIA_HOME}\*.*" 0 end_Julia_settings -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("JULIA_HOME", "${JULIA_HOME}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("JULIA_HOME", "${JULIA_HOME}").r0' ; Addition for JULIA_PKGDIR StrCmp "${JULIA_PKGDIR}" "" end_Julia_settings IfFileExists "${JULIA_PKGDIR}\*.*" 0 end_Julia_settings -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("JULIA_PKGDIR", "${JULIA_PKGDIR}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("JULIA_PKGDIR", "${JULIA_PKGDIR}").r0' end_Julia_settings: ; Addition for QT_API=pyqt5 if Qt5 detected IfFileExists "${WINPYDIR}\Lib\site-packages\PyQt5\*.*" 0 end_QT_API_settings -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("QT_API", "pyqt5").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("QT_API", "pyqt5").r0' end_QT_API_settings: ; jupyter StrCmp "${JUPYTER_DATA_DIR}" "" end_jupyter_data_setting -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("JUPYTER_DATA_DIR", "${JUPYTER_DATA_DIR}").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("JUPYTER_DATA_DIR", "${JUPYTER_DATA_DIR}").r0' end_jupyter_data_setting: ;================================================================ ; Settings directory IfFileExists "$EXEDIR\settings\*.*" 0 end_settings -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("HOME", "$EXEDIR\settings").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("HOME", "$EXEDIR\settings").r0' StrCmp "${SETTINGSDIR}" "" end_settings CreateDirectory "$EXEDIR\settings\${SETTINGSDIR}" ; Handle portability in Spyder's settings @@ -180,7 +180,7 @@ ReadINIStr $R7 $R6 "debug" "state" StrCmp $R7 "" no_debug StrCmp $R7 "disabled" no_debug StrCpy $R7 "enabled" -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("WINPYDEBUG", "True").r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("WINPYDEBUG", "True").r0' no_debug: @@ -198,7 +198,7 @@ envvar_loop: ${StrFilter} $1 "+" "" " " $1 ; Upper case + remove trailing spaces StrCmp $1 "PATH" found_path - System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("$1", "$2").r0' + System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("$1", "$2").r0' Goto end_found_path found_path: @@ -212,7 +212,7 @@ envvar_loop: envvar_done: StrCpy $R0 "${PREPATH};$R0;${POSTPATH}" -System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("PATH", R0).r0' +System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("PATH", R0).r0' ;================================================================ From a4fe165f266d895256e2f5e9fb54abcd07d7696e Mon Sep 17 00:00:00 2001 From: Aikes Date: Wed, 18 Nov 2015 15:54:16 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[~]=20=E6=94=B9=E6=88=90=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E5=8F=AF=E7=94=A2=E7=94=9FPortable=E5=95=9F=E5=8B=95=E7=A8=8B?= =?UTF-8?q?=E5=BC=8F=E5=8F=8A=E5=B0=8D=E6=87=89=E7=9A=84=E6=89=B9=E6=AC=A1?= =?UTF-8?q?=E6=AA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --------------------------- [+]:新增 [-]:刪除 [*]:修正 [~]:異動 --- make.py | 91 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 40 deletions(-) diff --git a/make.py b/make.py index 92009a99..784276cd 100644 --- a/make.py +++ b/make.py @@ -39,7 +39,7 @@ def get_nsis_exe(): """Return NSIS executable""" localdir = osp.join(sys.prefix, os.pardir, os.pardir) for drive in get_drives(): - for dirname in (r'C:\Program Files', r'C:\Program Files (x86)', + for dirname in (r'C:\Program Files', r'C:\Program Files (x86)',r'C:\Users\user\Desktop\NSISPortable', drive+r'PortableApps\NSISPortableANSI', drive+r'PortableApps\NSISPortable', osp.join(localdir, 'NSISPortableANSI'), @@ -517,26 +517,26 @@ def _copy_dev_docs(self): def _create_launchers(self): """Create launchers""" self._print("Creating launchers") - self.create_launcher('WinPython Command Prompt.exe', 'cmd.ico', + self.create_launcher('Python{0}Portable.exe'.format(self.python_version), 'cmd.ico', command='$SYSDIR\cmd.exe', args='/k', workdir='${WINPYDIR}') - self.create_launcher('WinPython Interpreter.exe', 'python.ico') - self.create_launcher('IDLE (Python GUI).exe', 'python.ico', + self.create_launcher('Python{0}InterpreterPortable.exe'.format(self.python_version), 'python.ico') + self.create_launcher('IDLE{0}Portable.exe'.format(self.python_version), 'python.ico', args='idle.pyw', workdir='${WINPYDIR}\Lib\idlelib') settingspath = osp.join('.spyder2', '.spyder.ini') - self.create_launcher('Spyder.exe', 'spyder.ico', + self.create_launcher('Spyder{0}Portable.exe'.format(self.python_version), 'spyder.ico', command='${WINPYDIR}\python.exe', args='-m spyderlib.start_app', workdir='${WINPYDIR}\Scripts', settingspath=settingspath) - self.create_launcher('Spyder (light).exe', 'spyder_light.ico', + self.create_launcher('SpyderLight{0}Portable.exe'.format(self.python_version), 'spyder_light.ico', command='${WINPYDIR}\python.exe', args='-m spyderlib.start_app --light', workdir='${WINPYDIR}\Scripts', settingspath=settingspath) - self.create_launcher('WinPython Control Panel.exe', 'winpython.ico', + self.create_launcher('Python{0}ControlPanelPortable.exe'.format(self.python_version), 'winpython.ico', command='${WINPYDIR}\pythonw.exe', args='-m winpython.controlpanel', workdir='${WINPYDIR}\Scripts') @@ -548,7 +548,7 @@ def _create_launchers(self): Qt4_dir = r'${WINPYDIR}\Lib\site-packages\PyQt4' Qt5_dir = r'${WINPYDIR}\Lib\site-packages\PyQt5' - self.create_launcher('Qt Demo.exe', 'qt.ico', + self.create_launcher('QtDemo{0}Portable.exe'.format(self.python_version), 'qt.ico', command=r'${WINPYDIR}\pythonw.exe', args='qtdemo.pyw', workdir=Qt4_dir+r'\examples\%s' % r'demos\qtdemo', @@ -556,49 +556,49 @@ def _create_launchers(self): betterargs='qtdemo.py', betterworkdir=Qt5_dir+r'\examples\%s' % r'qtdemo') - self.create_launcher('Qt Assistant.exe', 'qtassistant.ico', + self.create_launcher('QtAssistant{0}Portable.exe'.format(self.python_version), 'qtassistant.ico', command=Qt4_dir + r'\assistant.exe', workdir=r'${WINPYDIR}', bettercommand=Qt5_dir + r'\assistant.exe') - self.create_launcher('Qt Designer.exe', 'qtdesigner.ico', + self.create_launcher('QtDesigner{0}Portable.exe'.format(self.python_version), 'qtdesigner.ico', command=Qt4_dir + r'\designer.exe', workdir=r'${WINPYDIR}', bettercommand=Qt5_dir + r'\designer.exe') - self.create_launcher('Qt Linguist.exe', 'qtlinguist.ico', + self.create_launcher('QtLinguist{0}Portable.exe'.format(self.python_version), 'qtlinguist.ico', command=(Qt4_dir + r'\linguist.exe'), workdir=r'${WINPYDIR}', bettercommand=Qt5_dir + r'\linguist.exe') # Jupyter launchers - if osp.isfile(osp.join(self.python_dir, 'Scripts', 'jupyter.exe')): - self.create_launcher('IPython Qt Console.exe', 'ipython.ico', - command='${WINPYDIR}\Scripts\%s' % - 'jupyter-qtconsole.exe', - workdir=r'${WINPYDIR}\..\notebooks') + #if osp.isfile(osp.join(self.python_dir, 'Scripts', 'jupyter.exe')): + self.create_launcher('IPython{0}QtConsolePortable.exe'.format(self.python_version), 'ipython.ico', + command='${WINPYDIR}\Scripts\%s' % + 'jupyter-qtconsole.exe', + workdir=r'${WINPYDIR}\..\notebooks') - self.create_launcher('Jupyter Notebook.exe', 'jupyter.ico', - command='${WINPYDIR}\Scripts\%s' % - 'jupyter-notebook.exe', - workdir=r'${WINPYDIR}\..\notebooks') + self.create_launcher('Jupyter{0}NotebookPortable.exe'.format(self.python_version), 'jupyter.ico', + command='${WINPYDIR}\Scripts\%s' % + 'jupyter-notebook.exe', + workdir=r'${WINPYDIR}\..\notebooks') # R console launchers r_exe = self.R_PATH + r"\i386\R.exe" - if osp.isfile(self.winpydir + r_exe): - self.create_launcher('R Console32.exe', 'r.ico', - command='${WINPYDIR}\..' + r_exe, - workdir=r'${WINPYDIR}\..\notebooks') + #if osp.isfile(self.winpydir + r_exe): + self.create_launcher('R{0}Console32Portable.exe'.format(self.python_version), 'r.ico', + command='${WINPYDIR}\..' + r_exe, + workdir=r'${WINPYDIR}\..\notebooks') r_exe = self.R_PATH + r"\x64\R.exe" - if osp.isfile(self.winpydir + r_exe): - self.create_launcher('R Console64.exe', 'r.ico', - command='${WINPYDIR}\..' + r_exe, - workdir=r'${WINPYDIR}\..\notebooks') + #if osp.isfile(self.winpydir + r_exe): + self.create_launcher('R{0}Console64Portable.exe'.format(self.python_version), 'r.ico', + command='${WINPYDIR}\..' + r_exe, + workdir=r'${WINPYDIR}\..\notebooks') # Julia console launcher julia_exe = self.JULIA_PATH + r"\julia.exe" - if osp.isfile(self.winpydir + julia_exe): - self.create_launcher('Julia Console.exe', 'julia.ico', - command='${WINPYDIR}\..'+ julia_exe, - workdir=r'${WINPYDIR}\..\notebooks') + #if osp.isfile(self.winpydir + julia_exe): + self.create_launcher('Julia{0}ConsolePortable.exe'.format(self.python_version), 'julia.ico', + command='${WINPYDIR}\..'+ julia_exe, + workdir=r'${WINPYDIR}\..\notebooks') self._print_done() @@ -768,8 +768,9 @@ def make(self, remove_existing=True, requirements=None): #, find_links=None): if self.simulation: print("WARNING: this is just a simulation!", file=sys.stderr) - self.python_fname = self.get_package_fname( - r'python-([0-9\.rc]*)((\.|\-)amd64)?\.(msi|zip)') + #self.python_fname = self.get_package_fname( + # r'python-([0-9\.rc]*)((\.|\-)amd64)?\.(msi|zip)') + self.python_fname = 'python-3.5.0.msi' self.python_name = osp.basename(self.python_fname)[:-4] distname = 'win%s' % self.python_name vlst = re.match(r'winpython-([0-9\.]*)', distname @@ -793,7 +794,17 @@ def make(self, remove_existing=True, requirements=None): #, find_links=None): # is creating the directory automatically) os.mkdir(osp.join(self.winpydir, 'settings')) self._print_done() - + + self.python_name='App' + self.python_version='2.7' + self.python_fullversion='2.7.10' + self.distribution=wppm.BasePackage('32') + self.distribution.architecture=32 + self._create_batch_scripts_initial() + self._create_batch_scripts() # which set mingwpy as compiler + #self._run_complement_batch_scripts("run_required_first.bat") + self._create_launchers() + if remove_existing and not self.simulation: self._extract_python() self.distribution = wppm.Distribution(self.python_dir, @@ -1005,7 +1016,7 @@ def make_all(build_number, release_level, pyver, install_options = install_options.split() print('install_options', install_options) basedir = utils.get_basedir(pyver, rootdir=rootdir) - rebuild_winpython(basedir=basedir, archis=archis) + #rebuild_winpython(basedir=basedir, archis=archis) for architecture in archis: make_winpython(build_number, release_level, architecture, basedir, verbose, remove_existing, create_installer, simulation, @@ -1025,12 +1036,12 @@ def make_all(build_number, release_level, pyver, # install_options=r'--no-index --pre --trusted-host=None', # find_links=r'D:\Winpython\basedir34\packages.srcreq') - make_all(1, release_level='build3', pyver='3.5', rootdir=r'D:\Winpython', verbose=True, - archis=(64, ), flavor='Slim', + make_all(99, release_level='', pyver='2.7', rootdir=r'D:\Winpython', verbose=True, + archis=(32, ), flavor='Portable', requirements=r'D:\Winpython\basedir35\slim_requirements.txt', install_options=r'--no-index --pre --trusted-host=None', find_links=r'D:\Winpython\basedir34\packages.srcreq', source_dirs=r'D:\WinPython\basedir34\packages.src D:\WinPython\basedir35\packages.win-amd64', toolsdirs=r'D:\WinPython\basedir34\Tools.Slim', - docsdirs=r'D:\WinPython\basedir34\docs.Slim' -) + docsdirs=r'D:\WinPython\basedir34\docs.Slim') + From 528b623f81ef6ee9aadbd05c8cb548e2aa5b91c7 Mon Sep 17 00:00:00 2001 From: Aikes Date: Thu, 19 Nov 2015 14:21:14 +0800 Subject: [PATCH 4/5] =?UTF-8?q?[+]=20=E7=94=A2=E7=94=9F=E4=B9=8B=E5=BE=8C?= =?UTF-8?q?=E8=AE=93=E7=A8=8B=E5=BC=8F=E7=B5=90=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --------------------------- [+]:新增 [-]:刪除 [*]:修正 [~]:異動 --- make.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/make.py b/make.py index 784276cd..9d6e7041 100644 --- a/make.py +++ b/make.py @@ -804,6 +804,8 @@ def make(self, remove_existing=True, requirements=None): #, find_links=None): self._create_batch_scripts() # which set mingwpy as compiler #self._run_complement_batch_scripts("run_required_first.bat") self._create_launchers() + print('done') + exit() if remove_existing and not self.simulation: self._extract_python() From 98226d37593454dca18df85148441f841b260431 Mon Sep 17 00:00:00 2001 From: Aikes Date: Thu, 19 Nov 2015 14:58:55 +0800 Subject: [PATCH 5/5] =?UTF-8?q?[~]=20=E7=95=B0=E5=8B=95python=20portable?= =?UTF-8?q?=E7=89=88=E6=9E=B6=E6=A7=8B=EF=BC=8C=E5=B0=87=E4=B8=BB=E7=A8=8B?= =?UTF-8?q?=E5=BC=8F=E9=83=BD=E6=94=BE=E5=88=B0python/=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E5=8E=9F=E6=9C=AC=E7=82=BAapp/=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --------------------------- [+]:新增 [-]:刪除 [*]:修正 [~]:異動 --- make.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/make.py b/make.py index 9d6e7041..4c5fd7d2 100644 --- a/make.py +++ b/make.py @@ -795,9 +795,9 @@ def make(self, remove_existing=True, requirements=None): #, find_links=None): os.mkdir(osp.join(self.winpydir, 'settings')) self._print_done() - self.python_name='App' - self.python_version='2.7' - self.python_fullversion='2.7.10' + self.python_name='python' + self.python_version='3.4' + self.python_fullversion='3.4.3' self.distribution=wppm.BasePackage('32') self.distribution.architecture=32 self._create_batch_scripts_initial() @@ -1038,7 +1038,7 @@ def make_all(build_number, release_level, pyver, # install_options=r'--no-index --pre --trusted-host=None', # find_links=r'D:\Winpython\basedir34\packages.srcreq') - make_all(99, release_level='', pyver='2.7', rootdir=r'D:\Winpython', verbose=True, + make_all(99, release_level='', pyver='3.5', rootdir=r'D:\Winpython', verbose=True, archis=(32, ), flavor='Portable', requirements=r'D:\Winpython\basedir35\slim_requirements.txt', install_options=r'--no-index --pre --trusted-host=None',