-
Notifications
You must be signed in to change notification settings - Fork 265
Open
Description
Description
The check for wine executable is incorrect. When installing wine, we use the wine metapackage wine. It only installs wine64 behind the scenes.
windows-installer/src/index.ts
Lines 38 to 53 in 937bf3f
| export async function createWindowsInstaller(options: SquirrelWindowsOptions): Promise<void> { | |
| let useMono = false; | |
| const monoExe = 'mono'; | |
| const wineExe = ['arm64', 'x64'].includes(process.arch) ? 'wine64' : 'wine'; | |
| if (process.platform !== 'win32') { | |
| useMono = true; | |
| const [hasWine, hasMono] = await Promise.all([ | |
| checkIfCommandExists(wineExe), | |
| checkIfCommandExists(monoExe) | |
| ]); | |
| if (!hasWine || !hasMono) { | |
| throw new Error('You must install both Mono and Wine on non-Windows'); | |
| } |
windows-installer/src/index.ts
Lines 28 to 31 in 937bf3f
| function checkIfCommandExists(command: string): Promise<boolean> { | |
| const checkCommand = os.platform() === 'win32' ? 'where' : 'which'; | |
| return new Promise((resolve) => { | |
| exec(`${checkCommand} ${command}`, (error) => { |
x64 -> check for wine64 -> not found -> fail
Meanwhile
$ which wine
/usr/bin/wine
$ which wine64
$ apt search wine | grep wine
[...]
wine/stable,now 8.0~repack-4 all [installed] <- we install this metapackage
wine-binfmt/stable 8.0~repack-4 all
wine64/stable,now 8.0~repack-4 amd64 [installed,automatic] <- we get this
Expected
npm run make -- --platform win32 no wine or mono error
Actual
You must install both Mono and Wine on non-Windows
Proposed Solution
The proposal is to not trouble ourselves with it too much unless there is a real reason we need to make sure 64-bit has 64-bit and 32 has 32. But couldn't a 64-bit user have a 32-bit copy anyway..?
const wineExe = "wine";
const wine64Exe = "wine64";
///
// Promise.all would be helpful if we were trying to combine these promises into one... but we aren't
const hasWine = await checkIfCommandExists(wineExe);
const hasWine64 = await checkIfCommandExists(wine64Exe);
const hasMono = await checkIfCommandExists(monoExe);
if (!(hasWine || hasWine64) || !hasMono) {
throw new Error('You must install both Mono and Wine on non-Windows');
}Environment
Debian 12
$ uname -r
5.15.146.1-microsoft-standard-WSL2
$ node
> process.arch
x64
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels