@@ -255,6 +255,11 @@ with prefix_lock:
255
255
with open (os .environ ["STEAM_COMPAT_DATA_PATH" ] + "/tracked_files" , "w" ) as tfiles :
256
256
mergedirs (basedir + "/dist/share/default_pfx" , prefix , tfiles )
257
257
258
+ if os .path .exists (prefix + "/drive_c/windows/syswow64" ):
259
+ pfx_arch = "win64"
260
+ else :
261
+ pfx_arch = "win32"
262
+
258
263
with open (version_file , "w" ) as f :
259
264
f .write (CURRENT_PREFIX_VERSION + "\n " )
260
265
@@ -268,7 +273,12 @@ with prefix_lock:
268
273
else :
269
274
#linux-only fallback, really shouldn't get here
270
275
steamdir = os .environ ["HOME" ] + ".steam/root/"
271
- dst = prefix + "/drive_c/Program Files (x86)/"
276
+
277
+ if pfx_arch == "win64" :
278
+ dst = prefix + "/drive_c/Program Files (x86)/"
279
+ else :
280
+ dst = prefix + "/drive_c/Program Files/"
281
+
272
282
makedirs (dst + "Steam" )
273
283
filestocopy = ["steamclient.dll" ,
274
284
"steamclient64.dll" ,
@@ -286,8 +296,11 @@ with prefix_lock:
286
296
shutil .copy (basedir + "/dist/lib/wine/fakedlls/vrclient.dll" , dst )
287
297
shutil .copy (basedir + "/dist/lib64/wine/fakedlls/vrclient_x64.dll" , dst )
288
298
289
- shutil .copy (basedir + "/dist/lib/wine/dxvk/openvr_api_dxvk.dll" , prefix + "/drive_c/windows/syswow64/" )
290
- shutil .copy (basedir + "/dist/lib64/wine/dxvk/openvr_api_dxvk.dll" , prefix + "/drive_c/windows/system32/" )
299
+ if pfx_arch == "win64" :
300
+ shutil .copy (basedir + "/dist/lib/wine/dxvk/openvr_api_dxvk.dll" , prefix + "/drive_c/windows/syswow64/" )
301
+ shutil .copy (basedir + "/dist/lib64/wine/dxvk/openvr_api_dxvk.dll" , prefix + "/drive_c/windows/system32/" )
302
+ else :
303
+ shutil .copy (basedir + "/dist/lib/wine/dxvk/openvr_api_dxvk.dll" , prefix + "/drive_c/windows/system32/" )
291
304
292
305
#parse linux openvr config and present it in win32 format to the app.
293
306
#logic from openvr's CVRPathRegistry_Public::GetPaths
@@ -371,16 +384,24 @@ with prefix_lock:
371
384
372
385
if "wined3d" in config_opts :
373
386
#use gl-based wined3d for d3d11 and d3d10
374
- make_dxvk_links (basedir + "/dist/lib64/wine/fakedlls/" ,
375
- prefix + "drive_c/windows/system32" )
376
- make_dxvk_links (basedir + "/dist/lib/wine/fakedlls/" ,
377
- prefix + "drive_c/windows/syswow64" )
387
+ if pfx_arch == "win64" :
388
+ make_dxvk_links (basedir + "/dist/lib64/wine/fakedlls/" ,
389
+ prefix + "drive_c/windows/system32" )
390
+ make_dxvk_links (basedir + "/dist/lib/wine/fakedlls/" ,
391
+ prefix + "drive_c/windows/syswow64" )
392
+ else :
393
+ make_dxvk_links (basedir + "/dist/lib/wine/fakedlls/" ,
394
+ prefix + "drive_c/windows/system32" )
378
395
else :
379
396
#use vulkan-based dxvk for d3d11 and d3d10
380
- make_dxvk_links (basedir + "/dist/lib64/wine/dxvk/" ,
381
- prefix + "drive_c/windows/system32" )
382
- make_dxvk_links (basedir + "/dist/lib/wine/dxvk/" ,
383
- prefix + "drive_c/windows/syswow64" )
397
+ if pfx_arch == "win64" :
398
+ make_dxvk_links (basedir + "/dist/lib64/wine/dxvk/" ,
399
+ prefix + "drive_c/windows/system32" )
400
+ make_dxvk_links (basedir + "/dist/lib/wine/dxvk/" ,
401
+ prefix + "drive_c/windows/syswow64" )
402
+ else :
403
+ make_dxvk_links (basedir + "/dist/lib/wine/dxvk/" ,
404
+ prefix + "drive_c/windows/system32" )
384
405
for f in dxvkfiles :
385
406
dlloverrides [f ] = "n"
386
407
0 commit comments