Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

有可能支持Arm版windows系统吗,现在的情况是能安装但是打不开 #38

Closed
Luohl520 opened this issue Dec 21, 2023 · 34 comments
Labels
enhancement New feature or request

Comments

@Luohl520
Copy link

有可能支持Arm版windows系统吗,现在的情况是能安装但是打不开

@1111mp
Copy link
Owner

1111mp commented Dec 21, 2023

可以的,我会加一个windows arm架构的版本出来。大概下午会发出来。

不过我只有x64芯片的设备,如果后续还是有问题估计需要你自己按照文档编译了。

@Luohl520
Copy link
Author

可以的,我会加一个windows arm架构的版本出来。大概下午会发出来。

不过我只有x64芯片的设备,如果后续还是有问题估计需要你自己按照文档编译了。

好的,你发布后我将测试

@1111mp 1111mp added the enhancement New feature or request label Dec 21, 2023
@1111mp
Copy link
Owner

1111mp commented Dec 21, 2023

@Luohl520 最新 Release v2.6.2 版本提供了 Windows arm64 架构的安装包,有时间的话麻烦安装测试一下,非常感谢 🙏

@Luohl520
Copy link
Author

@Luohl520 最新 Release v2.6.2 版本提供了 Windows arm64 架构的安装包,有时间的话麻烦安装测试一下,非常感谢 🙏

测试还是打不开呢,双击后没有反应

@1111mp
Copy link
Owner

1111mp commented Dec 22, 2023

麻烦看一下是否存在%HOMEPATH%.nvmd目录,如果有,该目录下migration文件的内容可以提供一下吗。

如果这些文件都存在说明主进程运行时成功的,那就应该是在x64设备上编译出的arm64的包还是存在兼容性问题。如果是这样的话可能需要你这边根据文档自己编译一下了。抱歉啊。

@Luohl520
Copy link
Author

麻烦看一下是否存在%HOMEPATH%.nvmd目录,如果有,该目录下migration文件的内容可以提供一下吗。

如果这些文件都存在说明主进程运行时成功的,那就应该是在x64设备上编译出的arm64的包还是存在兼容性问题。如果是这样的话可能需要你这边根据文档自己编译一下了。抱歉啊。

没有找到nvmd目录呢
305C0ADFDE6E9DA969C1D2A962239C8F

@1111mp
Copy link
Owner

1111mp commented Dec 22, 2023

稍等我下午再重新编译一下。

windows-on-arm 按照文档应该是不需要做一些特殊处理的(nvm-desktop没有本机依赖)。

@1111mp
Copy link
Owner

1111mp commented Dec 23, 2023

x64平台交叉编译arm64还是存在问题,等我以后有arm64的设备之后再上传对应的安装包。抱歉。

在此之前你可以根据文档 Develop-and-build 在本地自己编译。谢谢。

@1111mp 1111mp closed this as completed Dec 23, 2023
@Luohl520
Copy link
Author

Luohl520 commented Jan 4, 2024

我在windows x64 下想打包 windows on arm 的可执行程序,报错,
image
请问我应该怎么处理

打包windows x64 是OK的。

@1111mp
Copy link
Owner

1111mp commented Jan 4, 2024

develop-and-build 文档这里我没有更新不好意思 最新的代码是需要将 "./assets/sources/nvmd.exe" 重命令为 "./assets/sources/{arch}.exe",也就是说如果打包x64就是 "./assets/sources/x64.exe" arm64就是 "./assets/sources/arm64.exe" 其他的就都一样

抱歉 没有更新文档 后续我会更新一下

@Luohl520
Copy link
Author

Luohl520 commented Jan 4, 2024

develop-and-build 文档这里我没有更新不好意思 最新的代码是需要将 "./assets/sources/nvmd.exe" 重命令为 "./assets/sources/{arch}.exe",也就是说如果打包x64就是 "./assets/sources/x64.exe" arm64就是 "./assets/sources/arm64.exe" 其他的就都一样

抱歉 没有更新文档 后续我会更新一下

我还没有到那一步,我现在是rust 编译可执行文件报错,cargo build --target aarch64-pc-windows-msvc,这个 报错

@1111mp
Copy link
Owner

1111mp commented Jan 4, 2024

除了安装 aarch64-pc-windows-msvc 的target 然后还需要在 VS 中安装对应架构的 c++ 编译工具 你应该需要安装 x64 的

或者你可以使用我已经编译好的 https://github.com/1111mp/nvmd-command/releases/tag/v2.6.2

@Luohl520
Copy link
Author

Luohl520 commented Jan 4, 2024

targe

我已将按照要求安装了 编译工具,
image
image

执行cargo build --target aarch64-pc-windows-msvc 依然报错,
image
执行 cargo build --release 正常打包完成

image

也许应该使用你打包出来的文件吧。
8291022f46e2b001036ab2734d402279

@1111mp
Copy link
Owner

1111mp commented Jan 4, 2024

image

image

这是我电脑上VS的 看起来应该没什么问题 安装结束之后电脑重启了吗

cargo build --release 命令是会根据电脑的platform和arch来打包的 跨平台需要指定 --target

你也可以从这里获取一些有用的信息:using_rust_on_windows_for_arm

@Luohl520
Copy link
Author

Luohl520 commented Jan 5, 2024

我在windows server 2012 上成功编译出 Arm版可执行文件,开始执行yarn start 命令时是可以正常执行的,程序也正常启动了的,然后我就打包yarn run package,打包时就报错了,
image

然后我再次执行 yarn start 也不可以了,报上面一样的错

我是哪里环境变量不对吗?

@1111mp
Copy link
Owner

1111mp commented Jan 5, 2024

你本地的node是通过nvm-desktop安装的对吧 那么你先查看一下 %HOMEPATH%\.nvmd\bin 目录下的文件是否齐全(maybe-somethings-you-need-to-know
Screenshot 2024-01-05 at 13 00 33

或者终端输入 node --version npm --version 看是否都正常

或者重启一下终端呢

@Luohl520
Copy link
Author

Luohl520 commented Jan 5, 2024

你本地的node是通过nvm-desktop安装的对吧 那么你先查看一下 %HOMEPATH%\.nvmd\bin 目录下的文件是否齐全(maybe-somethings-you-need-to-knowScreenshot 2024-01-05 at 13 00 33

或者终端输入 node --version npm --version 看是否都正常

或者重启一下终端呢

image
image
有些文件丢失了,npm也出问题了

@1111mp
Copy link
Owner

1111mp commented Jan 5, 2024

按照你的截图 你的node应该不是在.nvmd\bin下 试试运行 where node 查看一下真实的路径呢

然后你把.nvmd整个目录删掉重新安装node 再编译试试

按照编译文档:https://github.com/1111mp/nvm-desktop?tab=readme-ov-file#develop-and-build 你需要创建这两个文件:"./assets/sources/x64.exe" & "./assets/sources/arm64.exe" 就是nvmd.exe 重命名为 x64.exe & arm64.exe

@Luohl520
Copy link
Author

Luohl520 commented Jan 5, 2024

按照你的截图 你的node应该不是在.nvmd\bin下 试试运行 where node 查看一下真实的路径呢

然后你把.nvmd整个目录删掉重新安装node 再编译试试

按照编译文档:https://github.com/1111mp/nvm-desktop?tab=readme-ov-file#develop-and-build 你需要创建这两个文件:"./assets/sources/x64.exe" & "./assets/sources/arm64.exe" 就是nvmd.exe 重命名为 x64.exe & arm64.exe

打包还是不行
image
image
image

@1111mp
Copy link
Owner

1111mp commented Jan 5, 2024

这个错误好像跟项目没关系 是系统环境的问题吧 你试试这里的方法对你有用吗: https://stackoverflow.com/questions/59562969/error-spawn-cmd-enoent-while-starting-react-app

Goto > Control Panel\System and Security\System\Advance system setting\Enviroment variable and set system variables path C:\Windows\System32\ variable and restart your System.

@Luohl520
Copy link
Author

Luohl520 commented Jan 5, 2024

这个错误好像跟项目没关系 是系统环境的问题吧 你试试这里的方法对你有用吗: https://stackoverflow.com/questions/59562969/error-spawn-cmd-enoent-while-starting-react-app

Goto > Control Panel\System and Security\System\Advance system setting\Enviroment variable and set system variables path C:\Windows\System32\ variable and restart your System.

上面环境变量添加 C:\Windows\System32\ 就可以了。

我现在编译出了 winX64版本,请问怎么编译arm64呢
image

@1111mp
Copy link
Owner

1111mp commented Jan 5, 2024

Command Line Interface 这里是 electron-builder 的文档,如果你本地是main分支下最新的代码的话,运行yarn run package应该会打包出 x64 & arm64 的包的,具体配置:package.json#L199

"win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64",
            "arm64"
          ]
        }
      ],
      "requestedExecutionLevel": "requireAdministrator"
    },

@Luohl520
Copy link
Author

Luohl520 commented Jan 5, 2024

Command Line Interface 这里是 electron-builder 的文档,如果你本地是main分支下最新的代码的话,运行yarn run package应该会打包出 x64 & arm64 的包的,具体配置:package.json#L199

"win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64",
            "arm64"
          ]
        }
      ],
      "requestedExecutionLevel": "requireAdministrator"
    },

好消息是 我在arm 版win上 yarn start 成功运行了起来
image
image
image

坏消息是 yarn run package 打包出来的文件依旧是安装后打不开

image

@1111mp
Copy link
Owner

1111mp commented Jan 5, 2024

你在终端运行 start your_floder\nvm-desktop.exe 试试报什么错

你打包的时候 ./assets/sources/ 目录下有 x64.exe & arm64.exe & temp.cmd 文件吗 (node的 import { platform, arch } from 'node:process'; arch在arm平台上的值是 arm64 吗 我担心是 arm 如果是arm的话 那么arm64.exe 需要改成 arm.exe

你可以查看 %HOMEPATH%\.nvmd 目录下文件都否都存在 migration文件的内容是否为 8

@Luohl520
Copy link
Author

Luohl520 commented Jan 5, 2024

你在终端运行 start your_floder\nvm-desktop.exe 试试报什么错

你打包的时候 ./assets/sources/ 目录下有 x64.exe & arm64.exe & temp.cmd 文件吗 (node的 import { platform, arch } from 'node:process'; arch在arm平台上的值是 arm64 吗 我担心是 arm 如果是arm的话 那么arm64.exe 需要改成 arm.exe

你可以查看 %HOMEPATH%\.nvmd 目录下文件都否都存在 migration文件的内容是否为 8

屏幕截图 2024-01-05 212549
屏幕截图 2024-01-05 212846

`migration=8

@1111mp
Copy link
Owner

1111mp commented Jan 5, 2024

https://tencentcloud.csdn.net/65979e91dafaf23eeaee4394.html

试试这个呢

或者这里:electron/electron#32074

试试start nvm-desktop.exe --disable-gpu-sandbox

@Luohl520
Copy link
Author

Luohl520 commented Jan 6, 2024

https://tencentcloud.csdn.net/65979e91dafaf23eeaee4394.html

试试这个呢

或者这里:electron/electron#32074

试试start nvm-desktop.exe --disable-gpu-sandbox

### 好消息现在已经可以正常使用了

在 package.json 文件中
"win": { "target": [ { "target": "nsis", "arch": [ "x64", "arm64" ] } ], "requestedExecutionLevel": "requireAdministrator" },

将 "requestedExecutionLevel" 删除,或者值设置为 highestAvailable or asInvoker 经测试都是可以正常运行的。

屏幕截图 2024-01-05 212846
屏幕截图 2024-01-06 084941
屏幕截图 2024-01-06 085006
屏幕截图 2024-01-06 085110
屏幕截图 2024-01-06 085213

所以 后面我想你应该知道怎么做了。

最后给你看下我的所谓 Arm版windows电脑,其实是小米pad 5,没想到吧,哈哈。
2

@1111mp
Copy link
Owner

1111mp commented Jan 6, 2024

好的,非常感谢,特别是花了这么长时间去测试啊,后续我会调研一下为什么申请admin权限会造成启动奔溃的问题,所以现在结论是你在x64架构下打出的arm64包可以正常启动对吗

electron-userland/electron-builder#7566 这里应该讲清楚了原因

@Luohl520
Copy link
Author

Luohl520 commented Jan 6, 2024

yarn run package

之前是在Arm架构下打的包,可以正常运行,我又特地在X64架构下打了包,复制到arm架构下测试,是能够正常运行的,且因为window11 可以转译运行64程序,所以X64的的包也是可以运行的,只是相对于原生Arm64 会有性能损失。

@1111mp
Copy link
Owner

1111mp commented Jan 6, 2024

当设置成highestAvailable之后运行,会提示申请管理员权限吗,因为nvm-deaktop需要申请管理员权限运行(第一次安装的时候添加系统环境变量的命令),还是自动降级为普通的用户权限。

@Luohl520
Copy link
Author

Luohl520 commented Jan 6, 2024

当设置成highestAvailable之后运行,会提示申请管理员权限吗,因为nvm-deaktop需要申请管理员权限运行(第一次安装的时候添加系统环境变量的命令),还是自动降级为普通的用户权限。

没有提示,但是我看安装后环境变量有添加,能正常启动,是不是降级运行我不清楚

@1111mp
Copy link
Owner

1111mp commented Jan 6, 2024

好的 最后麻烦你测试一下呢 就是将 %HOMEPATH%\.nvmd 整个目录全部删除 同时删除系统环境变量 然后再启动 nvm-desktop 测试一下写入环境变量是否正常 (因为担心是之前你本地通过 yarn run start 启动项目写入的)

我稍后也会在windows x64 上测试一下,但是目前不太方便

真的非常感谢 🙏

@Luohl520
Copy link
Author

Luohl520 commented Jan 6, 2024

好的 最后麻烦你测试一下呢 就是将 %HOMEPATH%\.nvmd 整个目录全部删除 同时删除系统环境变量 然后再启动 nvm-desktop 测试一下写入环境变量是否正常 (因为担心是之前你本地通过 yarn run start 启动项目写入的)

我稍后也会在windows x64 上测试一下,但是目前不太方便

真的非常感谢 🙏

.nvmd目录删除,环境变量删除,重新打开程序,目录自动创建,环境变量自动添加,程序正常运行

@1111mp
Copy link
Owner

1111mp commented Jan 6, 2024

好的 谢谢 🌹

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants