def wineexec(executable, args="", wine_path=None, prefix=None, arch=None, working_dir=None, winetricks_wine='', blocking=False): """Execute a Wine command.""" detected_arch = detect_prefix_arch(prefix) executable = str(executable) if executable else '' if arch not in ('win32', 'win64'): arch = detected_arch or 'win32' if not wine_path: wine_path = wine().get_executable() if not working_dir: if os.path.isfile(executable): working_dir = os.path.dirname(executable) if executable.endswith(".msi"): executable = 'msiexec /i "%s"' % executable elif executable: executable = '%s' % executable # Create prefix if necessary if not detected_arch: wine_bin = winetricks_wine if winetricks_wine else wine_path create_prefix(prefix, wine_path=wine_bin, arch=arch) env = {'WINEARCH': arch} if winetricks_wine: env['WINE'] = winetricks_wine else: env['WINE'] = wine_path if prefix: env['WINEPREFIX'] = prefix wine_config = LutrisConfig(runner_slug='wine') if not wine_config.system_config[ 'disable_runtime'] and not runtime.is_disabled(): env['LD_LIBRARY_PATH'] = ':'.join(runtime.get_paths()) command = [wine_path] if executable: command.append(executable) command += shlex.split(args) if blocking: return system.execute(command, env=env, cwd=working_dir) else: thread = LutrisThread(command, runner=wine(), env=env, cwd=working_dir) thread.start() return thread
def wineexec(executable, args="", wine_path=None, prefix=None, arch=None, working_dir=None, winetricks_wine='', blocking=False): """Execute a Wine command.""" detected_arch = detect_prefix_arch(prefix) executable = str(executable) if executable else '' if arch not in ('win32', 'win64'): arch = detected_arch or 'win32' if not wine_path: wine_path = wine().get_executable() if not working_dir: if os.path.isfile(executable): working_dir = os.path.dirname(executable) if executable.endswith(".msi"): executable = 'msiexec /i "%s"' % executable elif executable: executable = '%s' % executable # Create prefix if necessary if not detected_arch: wine_bin = winetricks_wine if winetricks_wine else wine_path create_prefix(prefix, wine_path=wine_bin, arch=arch) env = { 'WINEARCH': arch } if winetricks_wine: env['WINE'] = winetricks_wine else: env['WINE'] = wine_path if prefix: env['WINEPREFIX'] = prefix wine_config = LutrisConfig(runner_slug='wine') if not wine_config.system_config['disable_runtime'] and not runtime.is_disabled(): env['LD_LIBRARY_PATH'] = ':'.join(runtime.get_paths()) command = [wine_path] if executable: command.append(executable) command += shlex.split(args) if blocking: return system.execute(command, env=env, cwd=working_dir) else: thread = LutrisThread(command, runner=wine(), env=env, cwd=working_dir) thread.start() return thread
def use_runtime(self): disable_runtime = self.system_config.get('disable_runtime') disable_runtime_by_env = runtime.is_disabled() if disable_runtime_by_env is True: disable_runtime = disable_runtime_by_env return not disable_runtime
def wineexec(executable, args="", wine_path=None, prefix=None, arch=None, working_dir=None, winetricks_wine='', blocking=False, config=None, include_processes=[], exclude_processes=[], disable_runtime=False, env={}, overrides=None): """ Execute a Wine command. Args: executable (str): wine program to run, pass None to run wine itself args (str): program arguments wine_path (str): path to the wine version to use prefix (str): path to the wine prefix to use arch (str): wine architecture of the prefix working_dir (str): path to the working dir for the process winetricks_wine (str): path to the wine version used by winetricks blocking (bool): if true, do not run the process in a thread config (LutrisConfig): LutrisConfig object for the process context watch (list): list of process names to monitor (even when in a ignore list) Returns: Process results if the process is running in blocking mode or LutrisThread instance otherwise. """ detected_arch = detect_prefix_arch(prefix) executable = str(executable) if executable else '' if arch not in ('win32', 'win64'): arch = detected_arch or 'win32' if not wine_path: wine_path = wine().get_executable() if not working_dir: if os.path.isfile(executable): working_dir = os.path.dirname(executable) executable, _args, working_dir = get_real_executable( executable, working_dir) if _args: args = '{} "{}"'.format(_args[0], _args[1]) # Create prefix if necessary if not detected_arch: wine_bin = winetricks_wine if winetricks_wine else wine_path create_prefix(prefix, wine_path=wine_bin, arch=arch) wineenv = {'WINEARCH': arch} if winetricks_wine: wineenv['WINE'] = winetricks_wine else: wineenv['WINE'] = wine_path if prefix: wineenv['WINEPREFIX'] = prefix wine_config = config or LutrisConfig(runner_slug='wine') if (not wine_config.system_config['disable_runtime'] and not runtime.is_disabled() and not disable_runtime): wineenv['LD_LIBRARY_PATH'] = ':'.join(runtime.get_paths()) if overrides: wineenv['WINEDLLOVERRIDES'] = get_overrides_env(overrides) wineenv.update(env) command = [wine_path] if executable: command.append(executable) command += shlex.split(args) if blocking: return system.execute(command, env=wineenv, cwd=working_dir) else: thread = LutrisThread(command, runner=wine(), env=wineenv, cwd=working_dir, include_processes=include_processes, exclude_processes=exclude_processes) thread.start() return thread
def use_runtime(self): disable_runtime = self.system_config.get('disable_runtime') disable_runtime_by_env = runtime.is_disabled() if disable_runtime_by_env is True: disable_runtime = disable_runtime_by_env return not disable_runtime
def wineexec(executable, args="", wine_path=None, prefix=None, arch=None, working_dir=None, winetricks_wine='', blocking=False, config=None, include_processes=[]): """ Execute a Wine command. Args: executable (str): wine program to run, pass None to run wine itself args (str): program arguments wine_path (str): path to the wine version to use prefix (str): path to the wine prefix to use arch (str): wine architecture of the prefix working_dir (str): path to the working dir for the process winetricks_wine (str): path to the wine version used by winetricks blocking (bool): if true, do not run the process in a thread config (LutrisConfig): LutrisConfig object for the process context watch (list): list of process names to monitor (even when in a ignore list) Returns: Process results if the process is running in blocking mode or LutrisThread instance otherwise. """ detected_arch = detect_prefix_arch(prefix) executable = str(executable) if executable else '' if arch not in ('win32', 'win64'): arch = detected_arch or 'win32' if not wine_path: wine_path = wine().get_executable() if not working_dir: if os.path.isfile(executable): working_dir = os.path.dirname(executable) if executable.endswith(".msi"): args = '/i "%s"' % executable executable = 'msiexec' # Create prefix if necessary if not detected_arch: wine_bin = winetricks_wine if winetricks_wine else wine_path create_prefix(prefix, wine_path=wine_bin, arch=arch) env = { 'WINEARCH': arch } if winetricks_wine: env['WINE'] = winetricks_wine else: env['WINE'] = wine_path if prefix: env['WINEPREFIX'] = prefix wine_config = config or LutrisConfig(runner_slug='wine') if not wine_config.system_config['disable_runtime'] and not runtime.is_disabled(): env['LD_LIBRARY_PATH'] = ':'.join(runtime.get_paths()) command = [wine_path] if executable: command.append(executable) command += shlex.split(args) if blocking: return system.execute(command, env=env, cwd=working_dir) else: thread = LutrisThread(command, runner=wine(), env=env, cwd=working_dir, include_processes=include_processes) thread.start() return thread