1diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py
2index 9e21c33c..21f134b3 100644
3--- a/src/ocrmypdf/_exec/ghostscript.py
4+++ b/src/ocrmypdf/_exec/ghostscript.py
5@@ -32,15 +32,7 @@ log = logging.getLogger(__name__)
6 # Most reliable what to get the bitness of Python interpreter, according to Python docs
7 _IS_64BIT = sys.maxsize > 2**32
8
9-_GSWIN = None
10-if os.name == 'nt':
11- if _IS_64BIT:
12- _GSWIN = 'gswin64c'
13- else:
14- _GSWIN = 'gswin32c'
15-
16-GS = _GSWIN if _GSWIN else 'gs'
17-del _GSWIN
18+GS = '@gs@'
19
20
21 def version():
22diff --git a/src/ocrmypdf/_exec/jbig2enc.py b/src/ocrmypdf/_exec/jbig2enc.py
23index 0f8f7392..db792b10 100644
24--- a/src/ocrmypdf/_exec/jbig2enc.py
25+++ b/src/ocrmypdf/_exec/jbig2enc.py
26@@ -12,7 +12,7 @@ from ocrmypdf.subprocess import get_version, run
27
28
29 def version():
30- return get_version('jbig2', regex=r'jbig2enc (\d+(\.\d+)*).*')
31+ return get_version('@jbig2@', regex=r'jbig2enc (\d+(\.\d+)*).*')
32
33
34 def available():
35@@ -25,7 +25,7 @@ def available():
36
37 def convert_group(*, cwd, infiles, out_prefix):
38 args = [
39- 'jbig2',
40+ '@jbig2@',
41 '-b',
42 out_prefix,
43 '-s', # symbol mode (lossy)
44@@ -44,7 +44,7 @@ def convert_group_mp(args):
45
46
47 def convert_single(*, cwd, infile, outfile):
48- args = ['jbig2', '-p', infile]
49+ args = ['@jbig2@', '-p', infile]
50 with open(outfile, 'wb') as fstdout:
51 proc = run(args, cwd=cwd, stdout=fstdout, stderr=PIPE)
52 proc.check_returncode()
53diff --git a/src/ocrmypdf/_exec/pngquant.py b/src/ocrmypdf/_exec/pngquant.py
54index 64e91139..ab5b9c49 100644
55--- a/src/ocrmypdf/_exec/pngquant.py
56+++ b/src/ocrmypdf/_exec/pngquant.py
57@@ -17,7 +17,7 @@ from ocrmypdf.subprocess import get_version, run
58
59
60 def version():
61- return get_version('pngquant', regex=r'(\d+(\.\d+)*).*')
62+ return get_version('@pngquant@', regex=r'(\d+(\.\d+)*).*')
63
64
65 def available():
66@@ -44,7 +44,7 @@ def input_as_png(input_file: Path):
67 def quantize(input_file: Path, output_file: Path, quality_min: int, quality_max: int):
68 with input_as_png(input_file) as input_stream:
69 args = [
70- 'pngquant',
71+ '@pngquant@',
72 '--force',
73 '--skip-if-larger',
74 '--quality',
75diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py
76index ad98836a..a12d3002 100644
77--- a/src/ocrmypdf/_exec/tesseract.py
78+++ b/src/ocrmypdf/_exec/tesseract.py
79@@ -111,7 +111,7 @@ class TesseractVersion(Version):
80
81
82 def version() -> str:
83- return get_version('tesseract', regex=r'tesseract\s(.+)')
84+ return get_version('@tesseract@', regex=r'tesseract\s(.+)')
85
86
87 def has_user_words() -> bool:
88@@ -138,7 +138,7 @@ def get_languages() -> set[str]:
89 msg += output
90 return msg
91
92- args_tess = ['tesseract', '--list-langs']
93+ args_tess = ['@tesseract@', '--list-langs']
94 try:
95 proc = run(
96 args_tess,
97@@ -160,7 +160,7 @@ def get_languages() -> set[str]:
98
99
100 def tess_base_args(langs: list[str], engine_mode: int | None) -> list[str]:
101- args = ['tesseract']
102+ args = ['@tesseract@']
103 if langs:
104 args.extend(['-l', '+'.join(langs)])
105 if engine_mode is not None:
106diff --git a/src/ocrmypdf/_exec/unpaper.py b/src/ocrmypdf/_exec/unpaper.py
107index d7f24265..d14f85de 100644
108--- a/src/ocrmypdf/_exec/unpaper.py
109+++ b/src/ocrmypdf/_exec/unpaper.py
110@@ -66,7 +66,7 @@ class UnpaperImageTooLargeError(Exception):
111
112
113 def version() -> str:
114- return get_version('unpaper')
115+ return get_version('@unpaper@')
116
117
118 SUPPORTED_MODES = {'1', 'L', 'RGB'}
119@@ -120,7 +120,7 @@ def _setup_unpaper_io(input_file: Path) -> Iterator[tuple[Path, Path, Path]]:
120 def run_unpaper(
121 input_file: Path, output_file: Path, *, dpi: DecFloat, mode_args: list[str]
122 ) -> None:
123- args_unpaper = ['unpaper', '-v', '--dpi', str(round(dpi, 6))] + mode_args
124+ args_unpaper = ['@unpaper@', '-v', '--dpi', str(round(dpi, 6))] + mode_args
125
126 with _setup_unpaper_io(input_file) as (input_png, output_pnm, tmpdir):
127 # To prevent any shenanigans from accepting arbitrary parameters in