本指南概述了如何通过 Corona 模拟器配置和构建 Win32 桌面应用程序。通过.exe
文件、一组 .dll
文件和您的 Corona 项目的资源文件组成。它被编译为
注意
Windows 版 Corona 模拟器支持的所有功能都支持 Win32 桌面版本。但是,Windows 版 Corona 模拟器不支持 macOS 版本支持的大多数原生 UI 功能。build.settings
文件中支持 orientation
表。如果已定义,则 config.lua
文件(指南)中定义的宽度和高度将相对于**纵向**方向,就像 iOS 和 Android 一样。这意味着对于
应用程序,width
是窗口的高度,height
是窗口的宽度,使您的项目设置可以移植到桌面和移动设备。build.settings
文件通过 win32
表支持以下 Win32
settings = { win32 = { -- Settings for Win32 apps go here } }
设置:
settings = { win32 = { preferenceStorage = "registry", } }
指示使用 "app"
类别通过 system.getPreference()、system.setPreferences() 和 system.deletePreferences() 函数访问时,应用程序的自定义首选项应存储在何处。
"sqlite"
— 这是默认设置,也是最可移植的选项。首选项存储在 Windows 用户隐藏的
CoronaPreferences.sqlite
数据库文件中。"registry"
— 将应用程序的首选项存储到
。此外,首选项名称中的正斜杠 (/
) 和反斜杠 (\
) 将被视为注册表项路径分隔符,并且将被视为相同的字符。
settings = { win32 = { singleInstance = false, } }
将其设置为 true
(默认设置)以允许一次只存在一个 Win32 桌面应用程序实例。这意味着尝试启动第二个实例会将第一个实例的窗口带到桌面的最前面。如果第二个实例被赋予任何命令行参数,则这些参数将通过 "applicationOpen"
类型的 system 事件传递给第一个实例。将此设置设置为 false
以同时支持多个应用程序实例。
settings = { window = { -- Settings for the desktop window; applies to both Win32 and macOS desktop apps }, }
对于 Win32 桌面应用程序和 macOS 桌面应用程序,Corona 的 build.settings
文件都支持用于自定义应用程序桌面窗口的 window
表,包括默认宽度/高度、窗口标题等。
在 window
表中,支持以下设置:
settings = { window = { defaultMode = "fullscreen", }, }
设置窗口在启动时应如何启动。支持的值包括 "normal"
、"minimized"
、"maximized"
或 "fullscreen"
。默认为 "normal"
。这也可以通过 native.setProperty() API 以编程方式设置。
settings = { window = { defaultViewWidth = 640, }, }
设置窗口视图/客户端区域的默认启动宽度。这是窗口边框内 Corona 渲染到的区域。理想情况下,这应该与您的 config.lua
内容区域宽度匹配或超过它。
settings = { window = { defaultViewHeight = 960, }, }
设置窗口视图/客户端区域的默认启动高度。这是窗口边框内 Corona 渲染到的区域。理想情况下,这应该与您的 config.lua
内容区域高度匹配或超过它。true
以允许最终用户调整窗口大小(默认情况下窗口不可调整大小)。请注意,如果为 true
,您可能需要处理 Corona 的 resize 事件来重新
settings = { window = { resizable = true, }, }
您的内容。
settings = { window = { minViewWidth = 320, }, }
此设置仅在 resizable
设置为 true
时适用。防止用户将窗口宽度调整到小于此值。请注意,这表示窗口边框内区域的宽度。如果 resizable
设置为 true
并且未指定此设置,则可以将窗口调整为操作系统允许的任何宽度。
settings = { window = { minViewHeight = 480, }, }
重新布局
settings = { window = { suspendWhenMinimized = true, }, }
您的内容。指示运行时在窗口最小化时暂停(默认情况下禁用)。
settings = { window = { titleText = { -- The "default" text will be used if the system is using a language and/or -- country code not defined below. This serves as a fallback mechanism. default = "Window Title Test", -- This text is used on English language systems in the United States. -- Note that the country code must be separated by a dash (-). ["en‐us"] = "Window Title Test (English‐USA)", -- This text is used on English language systems in the United Kingdom. -- Note that the country code must be separated by a dash (-). ["en‐gb"] = "Window Title Test (English‐UK)", -- This text is used for all other English language systems. ["en"] = "Window Title Test (English)", -- This text is used for all French language systems. ["fr"] = "Window Title Test (French)", -- This text is used for all Spanish language systems. ["es"] = "Window Title Test (Spanish)", }, }, }
您可以通过 build.settings
文件的 excludeFiles
模式匹配功能排除 Win32 桌面应用程序不需要的文件。有关模式匹配的更多详细信息,请参阅项目构建设置指南的**排除文件**部分。
通过 Corona 模拟器进行 Win32 构建时,您必须将 Icon-win32.ico
文件添加到 Corona 项目的根目录。此文件应包含不同分辨率的多张图像,捆绑到一个 .ico
文件中(详情)。此Icon-win32.ico
.exe
文件使用的图标,如 Windows 资源管理器中所示。您可以使用 Windows 资源管理器查看 .exe
应用程序图标在不同分辨率下的外观 - 只需在其菜单/工具栏中选择不同的“查看”模式,例如“详细信息”或“平铺”。
要构建和运行 Win32 桌面应用程序,请按照以下步骤操作:
**应用程序名称**、**EXE 文件名**、**版本**和**保存到文件夹**字段都是必需的。所有其他字段都是可选的,但我们强烈建议您指定它们。以下是关于这些构建对话框字段的说明:
**应用程序名称** — 您输入的应用程序名称可以在运行时通过 Corona 的 system.getInfo( "appName" )
调用获取(参考)。
**EXE 文件名** — 右键单击构建的 .exe
文件时,可以通过“属性”窗口查看此字段的大部分信息。
**版本** — 您输入的版本字符串可以在运行时通过 Corona 的 system.getInfo( "appVersionString" )
调用获取(参考)。
**说明** — 此字符串由 Windows 任务管理器用于显示应用程序进程的名称。如果未设置说明,任务管理器将使用应用程序名称。
**应用程序名称** + **公司名称** — 这两个字段组合用于生成唯一目录,用于将应用程序的文件存储在 Windows 用户隐藏的 `\AppData` 目录下。
使用上述组合时,将生成以下目录:
.\AppData\Roaming\<CompanyName>\<AppName>\Documents
.\AppData\Local\<CompanyName>\<AppName>\CachedFiles
.\AppData\Local\<CompanyName>\<AppName>\TemporaryFiles
.\AppData\Local\<CompanyName>\<AppName>\.system
(供 Corona 自身内部使用)Windows 将自动将 \Roaming
文件夹下的文件同步到用户通过 Active Directory 登录到同一 Windows 域的其他计算机上。但是,\Local
文件夹下的文件不会同步。
在生成的对话框窗口中,单击“在资源管理器中查看…”按钮转到已构建的 Win32 应用程序复制到的目录。该应用程序将位于名为 <AppName>.Win32
的子文件夹下。打开此文件夹可访问应用程序的 .exe
文件。
双击 .exe
文件以运行您的应用程序。
Corona 模拟器当前不支持直接模拟在 Windows 桌面模式下运行的应用程序。但是,Windows 版 Solar2D 包含一个名为 Corona.Shell.exe
的新应用程序,该应用程序可以运行 Corona 项目,类似于构建的 Win32 桌面应用程序的运行方式。默认情况下,您可以在此处找到 Corona Shell 应用程序:
C:\Program Files\Corona Labs\Corona SDK\Corona.Shell.exe
运行 Corona Shell 时,它会提示您选择 Corona 项目的 main.lua
文件。选择文件后,它将运行该应用程序。这允许您快速更改项目,而无需每次都执行构建。但是,请注意,Corona Shell**不**支持重新启动或日志记录,因为它实际上是在像真正的 Win32 桌面应用程序一样运行您的项目(无模拟)。
另请注意,在运行构建的 Win32 桌面应用程序或 Corona Shell 时,所有 print()
输出和 Lua 错误/警告都将流式传输到 stdout
。有多种方法可以管理此输出。一种方法是将 stdout
重定向到命令行(MS-DOS 框)中的文本文件,如下所示。这将启动您的应用程序,并且在您关闭它之后,将生成一个包含所有打印/日志记录信息的文本文件。
[YourExeFileName] > log.txt
`yourApp.exe > output.txt`
Corona 模拟器不会对您构建的 .exe
文件进行数字签名。这是因为 Windows 不强制要求 .exe
文件进行数字签名才能运行(它是可选的)。然而,某些杀毒软件可能会阻止您的应用启动,或者如果它没有数字签名,则会对其进行“标记”。因此,当您准备好公开发布应用程序时,最好对您的 .exe
文件进行数字签名。
Microsoft 在此处记录了如何对应用程序进行数字签名。
总而言之,要对您的应用进行签名,您需要从信誉良好的来源(例如 VeriSign 或 DigiCert)购买数字证书。Microsoft 的签名工具要求这是一个 .pfx
文件。然后,您需要通过下载并安装以下其中一项来获取 Microsoft 的 signtool
命令行实用程序:
以下是如何对您的应用进行数字签名的示例:
signtool sign /f <证书文件路径> /p <证书密码> /t <时间服务器URL> <可执行文件路径>