拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Ruffle 如何用 WiX 构建 Windows 的 .msi 安装包?

Ruffle 如何用 WiX 构建 Windows 的 .msi 安装包【免费下载链接】ruffleA Flash Player emulator written in Rust项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle如果你需要把 Ruffle 桌面版打包成 Windows 的.msi安装包仓库里已经备好了完整的 WiX 工程desktop/packages/windows/wix/目录下的 ruffle.wxs 是安装包定义文件dialog.wxi 是自定义安装界面README 说明了前置条件、环境变量和构建命令。整条路径是装好 WiX 命令行工具 → 准备好已编译的ruffle_desktop.exe→ 设置RUFFLE_VERSION环境变量 → 在 wix 目录下执行wix build得到.msi文件。准备 WiX 命令行环境按照 wix 目录 README 的 Prerequisites 一节需要安装 WiX Toolset 命令行工具并添加两个扩展dotnet tool install --global wix wix extension add -g WixToolset.UI.wixext wix extension add -g WixToolset.Util.wixext两个扩展的用途可以从ruffle.wxs里看出来UI扩展提供ui:WixUI_InstallDir_NoLicense这套安装向导Util扩展提供util:PermissionEx用于给安装目录授权见 ruffle.wxs 中的EnsureDirectoryWritable组件。另外构建安装包的前提是要有一个 Ruffle 桌面版可执行文件。README 给出两条路完整构建cargo build --release即仓库 README 中 Building from source 一节的桌面构建流程要求最新 stable 版 Rust以及 PATH 上可用的java或者已经有现成的exe放在仓库根目录下的target/release/ruffle_desktop.exe即可。设置构建所需的环境变量构建前必须处理两个环境变量README 的 Environment variables 一节对此有明确说明变量是否必需说明RUFFLE_VERSION必需本 MSI 所包含的 Ruffle 版本格式为1.2.3或1.2.3.4第四段值在 Windows 判断是否同版本或更新时会被忽略CARGO_BUILD_DIR可选ruffle_desktop所在文件夹默认值是 wix 目录相对仓库根的../../../../target/releaseRUFFLE_VERSION会被 ruffle.wxs 直接读取为Package的Version属性没有它构建会失败CARGO_BUILD_DIR则在 ruffle.wxs 中通过?ifdef env.CARGO_BUILD_DIR?分支解析未设置时回退到默认路径。执行 wix build 生成 .msi在desktop/packages/windows/wix目录下执行 README 给出的构建命令wix build ruffle.wxs -ext WixToolset.UI.wixext -ext WixToolset.Util.wixext -arch x64命令中各参数的作用以 README 为准-arch x64将 msi 标记为 x64 架构。改成-arch x86会把它标记为 x86例如安装到Program Files (x86)-o foo.msi控制 MSI 输出位置例如-o setup.msi-pdbtype none可选禁用.wixpdb生成。构建成功后.msi会出现在-o指定的位置未指定-o时由 WiX 使用默认输出位置。从产物内容上核对是否构建正确可以对照 ruffle.wxs 的打包内容安装包会把$(CargoBuildDir)/ruffle_desktop.exe以ruffle.exe的名称装进安装目录的bin子目录附带根目录的 LICENSE.md、开始菜单与桌面快捷方式并把安装目录加入PATHEnvironment子功能。安装包行为的关键细节阅读ruffle.wxs时有几个直接影响打包结果的设计值得知道UpgradeCode 决定是否是同一个包。ruffle.wxs 中UpgradeCode固定为C6A4BA50-FA08-4B87-9B55-D81A1C730D25MajorUpgrade配置了AllowSameVersionUpgradesyes和降级提示语。源码注释明确提示把UpgradeCode改成别的值msi 就会被视为一个不同的包适合本地测试安装而不干扰正式版本。文件关联。安装时注册Ruffle.swf、Ruffle.spl、Ruffle.ruf三个ProgId及对应的.swf/.spl/.ruf扩展名并向OpenWithProgids写入条目使 Ruffle 出现在打开方式对话框中见 ruffle.wxs 的Associations与ApplicationInfo组件。自定义安装对话框。dialog.wxi 基于 WiX 的WixUI_InstallDir改写去掉了许可协议页并在安装目录页RuffleInstallDirDlg即文首截图对应界面加入了在桌面创建快捷方式的勾选框由INSTALLDESKTOPSHORTCUT属性控制。与发布流水线的差异仓库的发布工作流 .github/workflows/release.yml 展示了 CI 环境下同一套构建的完整形态可作为对照WiX 版本被固定为 5.0.2dotnet tool install --global wix --version 5.0.2两个扩展也锁定WixToolset.UI.wixext/5.0.2和WixToolset.Util.wixext/5.0.2本地手动构建时 README 未指定版本装到最新即可可执行文件来自--profile dist的构建CARGO_BUILD_DIR因此设置为../../../../target/${{ matrix.target }}/dist而不是默认的target/release输出命令为wix build ruffle.wxs -ext WixToolset.UI.wixext -ext WixToolset.Util.wixext -arch ${{ matrix.MSI_ARCH }} -o ../../../../package/setup.msi -pdbtype none即发布产物落在package/setup.msi随后被7z压缩进最终的PACKAGE_FILE分发包RUFFLE_VERSION取流水线输出的四位版本号version4。也就是说发布产物除了用distprofile 构建的 exe 之外与上面手动构建的流程是同一份ruffle.wxs。限制与边界架构只能在x64和x86之间选择-arch参数决定 msi 的架构标记与默认安装目录构建本身不会改变 exe 的位数ruffle_desktop.exe必须与所选-arch匹配RUFFLE_VERSION的第四段版本号在 Windows 的版本比较中会被忽略这是 Windows 自身的版本判定行为不是 WiX 的取舍本文只覆盖桌面版 MSI 打包。浏览器扩展、Web 版和 Android 版走的是 README 中各自独立的构建路径与本流程无关。【免费下载链接】ruffleA Flash Player emulator written in Rust项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门