使用tauri打包的应用程序,在windows10环境下进行安装时。当程序安装到一半时,弹出警告弹窗,如图所示:
Windows Installer 程序包有问题。作为安装一部分的程序没有按预期完成。请与你的支持人员或程序包开发商联系。
点击确定后就自动取消了安装。
最开始,我觉得会不会是因为环境中必须安装rust。但事实上,tauri打包是编译成c++,不需要按照rust来运行桌面程序的。
然后又因为我的程序是在windows2019环境下打包的,所以我怀疑是因为交叉编译哪里出问题了,构建环境造成的不兼容。
正当我准备在windows10电脑中创建编译环境的时候,我发现tauri官网中有这么一句:
2. WebView2
NOTE:
WebView2 is pre-installed in Windows 11
Tauri heavily depends on WebView2 to render web content on Windows, therefore you must have WebView2 installed. The easiest way is to download and run the Evergreen Bootstrapper from Microsoft's website.
The bootstrapper script will try to determine the correct architecture and version for your system. Still, if you run into issues (especially with Windows on ARM) you can select the correct standalone installer.
也就是说,WebView2是tauri程序必须的,而windows11是默认预装了WebView2的。那么windows10呢?它是否是缺少了WebView2?
因此,我按照教程给的链接Microsoft's website.下载了WebView2安装程序,进行WebView2的按照。按照完成后,再次安装之前的那个tauri程序,结果一切正常,启动也正常。
所以,我的结论是,在windows环境下,一定要检查是否有预装WebView2。
tauri的图形化界面是在macOS环境下是基于sarfri的,而在windows下是依托的WebView2。这也是为什么tauri打包的程序可以非常小,而electron打包的程序一般都不低于150M。这就是因为electron除了打包用户代码外,还将图形化的chrome和js运行时V8引擎都封装到了程序中。而tauri则是直接使用系统环境中的图形化程序,一下就减少了130M左右(webView2的尺寸)。另外,它将底层代码编译成c++,也可以直接利用环境中的c语言编译器进行执行,这样又少了很大的尺寸。总之,tauri是尽量的利用系统环境来执行桌面程序,这样才能做到程序尺寸非常小的。
如果可以使用nodejs开发一个框架,图形化也是借用系统环境中的WebView或者chrome。然后将运行时编译成c++会不会也是个很好的思路?
为什么我要执着于nodejs?因为rust语言体验实在是太差了,文档汉化做的也非常糟糕,门槛有十八层楼那么高。而nodejs是前端更能接受的语法,能更好的拓宽前端的发展之路。