mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
calibre portable: Add launchers for standalone viewer and editor
This commit is contained in:
parent
9d31105ad0
commit
1b9318e01b
@ -313,14 +313,16 @@ def extract_pyd_modules(env, site_packages_dir):
|
|||||||
|
|
||||||
def embed_resources(env, module, desc=None, extra_data=None, product_description=None):
|
def embed_resources(env, module, desc=None, extra_data=None, product_description=None):
|
||||||
icon_base = j(env.src_root, 'icons')
|
icon_base = j(env.src_root, 'icons')
|
||||||
icon_map = {'calibre': 'library', 'ebook-viewer': 'viewer', 'ebook-edit': 'ebook-edit',
|
icon_map = {
|
||||||
'lrfviewer': 'viewer', 'calibre-portable': 'library'}
|
'calibre': 'library', 'ebook-viewer': 'viewer', 'ebook-edit': 'ebook-edit',
|
||||||
|
'lrfviewer': 'viewer',
|
||||||
|
}
|
||||||
file_type = 'DLL' if module.endswith('.dll') else 'APP'
|
file_type = 'DLL' if module.endswith('.dll') else 'APP'
|
||||||
with open(env.rc_template, 'rb') as f:
|
with open(env.rc_template, 'rb') as f:
|
||||||
template = f.read().decode('utf-8')
|
template = f.read().decode('utf-8')
|
||||||
bname = b(module)
|
bname = b(module)
|
||||||
internal_name = os.path.splitext(bname)[0]
|
internal_name = os.path.splitext(bname)[0]
|
||||||
icon = icon_map.get(internal_name, 'command-prompt')
|
icon = icon_map.get(internal_name.replace('-portable', ''), 'command-prompt')
|
||||||
if internal_name.startswith('calibre-portable-'):
|
if internal_name.startswith('calibre-portable-'):
|
||||||
icon = 'install'
|
icon = 'install'
|
||||||
icon = j(icon_base, icon + '.ico')
|
icon = j(icon_base, icon + '.ico')
|
||||||
@ -415,18 +417,23 @@ def build_portable(env):
|
|||||||
obj = j(env.obj_dir, b(src) + '.obj')
|
obj = j(env.obj_dir, b(src) + '.obj')
|
||||||
cflags = '/c /EHsc /MT /W3 /Ox /nologo /D_UNICODE /DUNICODE'.split()
|
cflags = '/c /EHsc /MT /W3 /Ox /nologo /D_UNICODE /DUNICODE'.split()
|
||||||
|
|
||||||
printf('Compiling', obj)
|
for exe_name in ('calibre.exe', 'ebook-viewer.exe', 'ebook-edit.exe'):
|
||||||
cmd = [CL] + cflags + ['/Fo' + obj, '/Tc' + src]
|
exe = j(base, exe_name.replace('.exe', '-portable.exe'))
|
||||||
|
printf('Compiling', exe)
|
||||||
|
cmd = [CL] + cflags + ['/DEXE_NAME="%s"' % exe_name, '/Fo' + obj, '/Tc' + src]
|
||||||
run_compiler(env, *cmd)
|
run_compiler(env, *cmd)
|
||||||
|
|
||||||
exe = j(base, 'calibre-portable.exe')
|
|
||||||
printf('Linking', exe)
|
printf('Linking', exe)
|
||||||
|
desc = {
|
||||||
|
'calibre.exe': 'Calibre Portable',
|
||||||
|
'ebook-viewer.exe': 'Calibre Portable Viewer',
|
||||||
|
'ebook-edit.exe': 'Calibre Portable Editor'
|
||||||
|
}[exe_name]
|
||||||
cmd = [LINK] + [
|
cmd = [LINK] + [
|
||||||
'/INCREMENTAL:NO', '/MACHINE:' + machine,
|
'/INCREMENTAL:NO', '/MACHINE:' + machine,
|
||||||
'/LIBPATH:' + env.obj_dir, '/SUBSYSTEM:WINDOWS',
|
'/LIBPATH:' + env.obj_dir, '/SUBSYSTEM:WINDOWS',
|
||||||
'/RELEASE',
|
'/RELEASE',
|
||||||
'/ENTRY:wWinMainCRTStartup',
|
'/ENTRY:wWinMainCRTStartup',
|
||||||
'/OUT:' + exe, embed_resources(env, exe, desc='Calibre Portable', product_description='Calibre Portable'),
|
'/OUT:' + exe, embed_resources(env, exe, desc=desc, product_description=desc),
|
||||||
obj, 'User32.lib']
|
obj, 'User32.lib']
|
||||||
run(*cmd)
|
run(*cmd)
|
||||||
|
|
||||||
|
@ -407,6 +407,16 @@ static BOOL move_program() {
|
|||||||
show_last_error(L"Failed to move calibre-portable.exe, make sure calibre is not running");
|
show_last_error(L"Failed to move calibre-portable.exe, make sure calibre is not running");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (MoveFileEx(L"Calibre Portable\\ebook-viewer-portable.exe",
|
||||||
|
L"..\\ebook-viewer-portable.exe", MOVEFILE_REPLACE_EXISTING) == 0) {
|
||||||
|
show_last_error(L"Failed to move ebook-viewer-portable.exe, make sure calibre is not running");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (MoveFileEx(L"Calibre Portable\\ebook-edit-portable.exe",
|
||||||
|
L"..\\ebook-edit-portable.exe", MOVEFILE_REPLACE_EXISTING) == 0) {
|
||||||
|
show_last_error(L"Failed to move ebook-edit-portable.exe, make sure calibre is not running");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (directory_exists(L"..\\Calibre")) {
|
if (directory_exists(L"..\\Calibre")) {
|
||||||
if (!rmtree(L"..\\Calibre")) {
|
if (!rmtree(L"..\\Calibre")) {
|
||||||
|
@ -148,7 +148,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine
|
|||||||
exe = (LPTSTR)calloc(BUFSIZE, sizeof(TCHAR));
|
exe = (LPTSTR)calloc(BUFSIZE, sizeof(TCHAR));
|
||||||
|
|
||||||
_sntprintf_s(config_dir, BUFSIZE, _TRUNCATE, _T("%sCalibre Settings"), app_dir);
|
_sntprintf_s(config_dir, BUFSIZE, _TRUNCATE, _T("%sCalibre Settings"), app_dir);
|
||||||
_sntprintf_s(exe, BUFSIZE, _TRUNCATE, _T("%sCalibre\\calibre.exe"), app_dir);
|
_sntprintf_s(exe, BUFSIZE, _TRUNCATE, _T("%sCalibre\\%s"), app_dir, _T(EXE_NAME));
|
||||||
|
|
||||||
launch_calibre(exe, config_dir);
|
launch_calibre(exe, config_dir);
|
||||||
|
|
||||||
|
@ -331,8 +331,11 @@ def decode(cfi, doc):
|
|||||||
node = q
|
node = q
|
||||||
cfi = cfi.substr(r[0].length)
|
cfi = cfi.substr(r[0].length)
|
||||||
else:
|
else:
|
||||||
|
if target:
|
||||||
error = "No matching child found for CFI: " + cfi
|
error = "No matching child found for CFI: " + cfi
|
||||||
break
|
break
|
||||||
|
else:
|
||||||
|
cfi = cfi.substr(r[0].length)
|
||||||
else if cfi[0] is '!': # Indirection
|
else if cfi[0] is '!': # Indirection
|
||||||
if node.contentDocument:
|
if node.contentDocument:
|
||||||
node = node.contentDocument
|
node = node.contentDocument
|
||||||
|
Loading…
x
Reference in New Issue
Block a user