<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://tutorial.leapever.com</id>
    <title>恒跃软件官方教程、博客和文档库 Blog</title>
    <updated>2026-07-26T10:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://tutorial.leapever.com"/>
    <subtitle>恒跃软件官方教程、博客和文档库 Blog</subtitle>
    <icon>https://tutorial.leapever.com/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[在.NET项目集成混淆加密功能：自动化保护DLL和EXE]]></title>
        <id>https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build</id>
        <link href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build"/>
        <updated>2026-07-26T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[为了保护C#程序, 在.NET项目交付DLL或EXE之前，通常需要先编译，再手动打开混淆工具、选择程序集、加载配置并导出结果。对于经常发布的项目，这套操作不仅重复，还容易漏选文件或使用错误配置。]]></summary>
        <content type="html"><![CDATA[<p>为了保护C#程序, 在.NET项目交付DLL或EXE之前，通常需要先编译，再手动打开混淆工具、选择程序集、加载配置并导出结果。对于经常发布的项目，这套操作不仅重复，还容易漏选文件或使用错误配置。</p>
<p>更稳定的方式是把<a href="https://csharpobf.leapever.com/" target="_blank" rel="noopener noreferrer">恒盾C#混淆加密大师</a>的CLI接入MSBuild：Release构建完成后自动获取当前项目的真实输出路径，调用CLI生成保护版本。由于Visual Studio、Rider、<code>dotnet build</code>和多数CI平台最终都会调用MSBuild，因此只需在项目文件中维护一套规则。</p>
<p><img decoding="async" loading="lazy" alt="C#混淆加密大师1.5.0截图" src="https://tutorial.leapever.com/assets/images/csharp-obf-1.5.0-a4a8fa42bcc29d80e6168f49c6a25375.png" width="2048" height="1580" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="集成后的构建流程">集成后的构建流程<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E9%9B%86%E6%88%90%E5%90%8E%E7%9A%84%E6%9E%84%E5%BB%BA%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="集成后的构建流程的直接链接" title="集成后的构建流程的直接链接">​</a></h2>
<p>本文实现的流程如下：</p>
<ol>
<li>正常编译.NET项目，不修改原始构建产物。</li>
<li>仅在Release配置且已经配置CLI路径时执行混淆。</li>
<li>将<code>.deps.json</code>、<code>.runtimeconfig.json</code>和依赖DLL复制到<code>protected</code>目录。</li>
<li>使用<code>--input</code>和<code>--output</code>覆盖配置文件中的路径，由CLI生成受保护的主程序集。</li>
<li>CLI返回非零退出码或未生成目标文件时让构建失败，避免误发布未保护的程序。</li>
</ol>
<p>最终目录类似下面这样：</p>
<div class="language-text codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-text codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">bin/Release/net8.0/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├─ DotNetObfuscationSample.dll          # 原始构建产物</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├─ DotNetObfuscationSample.deps.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├─ DotNetObfuscationSample.runtimeconfig.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└─ protected/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   ├─ DotNetObfuscationSample.dll       # 已混淆的主程序集</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   ├─ DotNetObfuscationSample.deps.json</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   └─ DotNetObfuscationSample.runtimeconfig.json</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>原始目录可继续用于调试和问题定位，发布时只取<code>protected</code>目录即可。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="第一步准备cli和混淆配置">第一步：准备CLI和混淆配置<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%87%86%E5%A4%87cli%E5%92%8C%E6%B7%B7%E6%B7%86%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="第一步：准备CLI和混淆配置的直接链接" title="第一步：准备CLI和混淆配置的直接链接">​</a></h2>
<p>安装恒盾C#混淆加密大师后，在安装目录中找到<code>CLI.exe</code>。然后在图形界面中配置需要启用的保护功能，通过“文件 &gt; 导出配置”得到<code>obfuscation.csop</code>，并把它放在<code>.csproj</code>同一目录。配置文件中的<code>ModulePath</code>和<code>OutputPath</code>可以保留示例值，因为构建时会通过CLI参数覆盖：</p>
<div class="language-jsonc codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-jsonc codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "ModulePath": "bin/Release/net8.0/MyApp.dll",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "OutputPath": "bin/Release/net8.0/protected/MyApp.dll",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "AntiILDasm": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "StringConfusor": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "IntConfusor": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "FieldRename": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "MethodRename": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "ParamRename": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "TypeRename": true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "RenameMode": 1,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "Seed": "my-project-release",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>实际使用时建议保留软件导出的完整配置，不要只复制上面的精简片段。可先启用少量保护选项，验证程序正常启动和主要功能后，再逐步增加保护强度。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="第二步在项目文件中加入msbuild目标">第二步：在项目文件中加入MSBuild目标<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E7%AC%AC%E4%BA%8C%E6%AD%A5%E5%9C%A8%E9%A1%B9%E7%9B%AE%E6%96%87%E4%BB%B6%E4%B8%AD%E5%8A%A0%E5%85%A5msbuild%E7%9B%AE%E6%A0%87" class="hash-link" aria-label="第二步：在项目文件中加入MSBuild目标的直接链接" title="第二步：在项目文件中加入MSBuild目标的直接链接">​</a></h2>
<p>打开需要保护的<code>.csproj</code>，在<code>&lt;/Project&gt;</code>之前加入下面的内容：</p>
<div class="language-xml codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-xml codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">PropertyGroup</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ObfuscatorCliPath</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatorCliPath)' == ''</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">$(OBFUSCATOR_CLI_PATH)</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ObfuscatorCliPath</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">RunObfuscator</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(RunObfuscator)' == '' and '$(Configuration)' == 'Release' and '$(ObfuscatorCliPath)' != ''</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">true</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">RunObfuscator</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">RunObfuscator</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(RunObfuscator)' == ''</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">false</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">RunObfuscator</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ObfuscatorConfigPath</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">$(MSBuildProjectDirectory)\obfuscation.csop</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ObfuscatorConfigPath</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">PropertyGroup</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Target</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Name</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">ObfuscateReleaseOutput</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag attr-name" style="color:#00a4db">AfterTargets</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Build</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(Configuration)' == 'Release' and '$(RunObfuscator)' == 'true'</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">PropertyGroup</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ObfuscatedOutputDir</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatedOutputDir)' == ''</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">$(TargetDir)protected\</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ObfuscatedOutputDir</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ObfuscatedOutputPath</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatedOutputPath)' == ''</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">$(ObfuscatedOutputDir)$(TargetFileName)</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ObfuscatedOutputPath</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">PropertyGroup</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Error</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">'</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatorCliPath)' == ''</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">         </span><span class="token tag attr-name" style="color:#00a4db">Text</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">RunObfuscator=true, but ObfuscatorCliPath or OBFUSCATOR_CLI_PATH is not configured.</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Error</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">!Exists('$(ObfuscatorCliPath)')</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">         </span><span class="token tag attr-name" style="color:#00a4db">Text</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Obfuscator CLI was not found: $(ObfuscatorCliPath)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Error</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">!Exists('$(ObfuscatorConfigPath)')</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">         </span><span class="token tag attr-name" style="color:#00a4db">Text</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Obfuscator config was not found: $(ObfuscatorConfigPath)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">RemoveDir</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Directories</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatedOutputDir)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">MakeDir</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Directories</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatedOutputDir)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ItemGroup</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ObfuscatorCompanionFile</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Include</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">$(TargetDir)**\*</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">                                                                                                   </span><span class="token tag attr-name" style="color:#00a4db">Exclude</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatedOutputDir)**\*;$(TargetPath)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ItemGroup</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Copy</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">SourceFiles</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">@(ObfuscatorCompanionFile)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag attr-name" style="color:#00a4db">DestinationFiles</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">@(ObfuscatorCompanionFile-&gt;'$(ObfuscatedOutputDir)%(RecursiveDir)%(Filename)%(Extension)')</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag attr-name" style="color:#00a4db">SkipUnchangedFiles</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">true</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Message</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Importance</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">high</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Text</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Obfuscating $(TargetPath)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Exec</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Command</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatorCliPath)</span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c"> obf --config </span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatorConfigPath)</span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c"> --input </span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c">$(TargetPath)</span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c"> --output </span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value" style="color:#e3116c">$(ObfuscatedOutputPath)</span><span class="token tag attr-value entity named-entity" style="color:#36acaa">&amp;quot;</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Error</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Condition</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">!Exists('$(ObfuscatedOutputPath)')</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">         </span><span class="token tag attr-name" style="color:#00a4db">Text</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Obfuscator did not create the expected output: $(ObfuscatedOutputPath)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Message</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Importance</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">high</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">Text</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Protected output: $(ObfuscatedOutputDir)</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Target</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这里使用的都是MSBuild内置属性，因此不需要硬编码项目名称或目标框架：</p>
<ul>
<li><code>$(MSBuildProjectDirectory)</code>是当前项目目录。</li>
<li><code>$(TargetPath)</code>是本次构建产生的主程序集完整路径。</li>
<li><code>$(TargetFileName)</code>会自动适配不同项目名称。</li>
<li><code>AfterTargets="Build"</code>确保只有编译成功后才执行CLI。</li>
<li><code>Exec</code>检查CLI退出码，随后的<code>Error</code>还会确认目标文件确实已经生成。</li>
</ul>
<p>复制主程序集以外的完整输出内容，再由CLI生成受保护的主程序集，是为了保留程序运行需要的配置和依赖文件。不要只把混淆后的DLL单独交付。排除原始主程序集也能确保后续文件检查不会把未经保护的副本误判为成功结果。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="第三步配置cli路径">第三步：配置CLI路径<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E7%AC%AC%E4%B8%89%E6%AD%A5%E9%85%8D%E7%BD%AEcli%E8%B7%AF%E5%BE%84" class="hash-link" aria-label="第三步：配置CLI路径的直接链接" title="第三步：配置CLI路径的直接链接">​</a></h2>
<p>不建议把个人电脑上的绝对安装路径写入<code>.csproj</code>。可以使用环境变量，让不同开发机和CI环境使用各自的CLI位置。</p>
<p>在PowerShell中为当前终端设置：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">$env:OBFUSCATOR_CLI_PATH = 'C:\Tools\CSharpObfuscator\CLI.exe'</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>如需永久写入当前Windows用户的环境变量：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">[Environment]::SetEnvironmentVariable(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    'OBFUSCATOR_CLI_PATH',</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    'C:\Tools\CSharpObfuscator\CLI.exe',</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    'User'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">)</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>永久设置后需要重新打开Visual Studio、Rider或终端。也可以在单次构建中直接传入路径：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">dotnet build -c Release -p:ObfuscatorCliPath='C:\Tools\CSharpObfuscator\CLI.exe'</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="第四步执行release构建">第四步：执行Release构建<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E7%AC%AC%E5%9B%9B%E6%AD%A5%E6%89%A7%E8%A1%8Crelease%E6%9E%84%E5%BB%BA" class="hash-link" aria-label="第四步：执行Release构建的直接链接" title="第四步：执行Release构建的直接链接">​</a></h2>
<p>在命令行中执行：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">dotnet build -c Release</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在Visual Studio中将解决方案配置切换为<code>Release</code>后执行“生成解决方案”，或者在Rider中构建Release配置，都会触发同一个MSBuild目标。Debug构建默认不会执行混淆。</p>
<p>如需临时跳过混淆，可以显式关闭开关：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">dotnet build -c Release -p:RunObfuscator=false</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>构建日志中出现下面两行，表示集成目标已执行：</p>
<div class="language-text codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-text codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">Obfuscating ...\bin\Release\net8.0\MyApp.dll</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Protected output: ...\bin\Release\net8.0\protected\</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="在ci中使用">在CI中使用<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E5%9C%A8ci%E4%B8%AD%E4%BD%BF%E7%94%A8" class="hash-link" aria-label="在CI中使用的直接链接" title="在CI中使用的直接链接">​</a></h2>
<p>CI使用的仍然是相同命令，只需提前安装并注册CLI，再通过环境变量或MSBuild属性传入路径：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">$env:OBFUSCATOR_CLI_PATH = "$env:OBFUSCATOR_HOME\CLI.exe"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">dotnet restore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">dotnet build -c Release --no-restore</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>建议把<code>protected</code>目录作为发布制品，并在上传前增加一个文件存在性检查：</p>
<div class="language-powershell codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-powershell codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">$protectedFile = '.\bin\Release\net8.0\protected\MyApp.dll'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">if (-not (Test-Path $protectedFile)) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    throw "未生成混淆后的程序集: $protectedFile"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="wpfwinforms类库和aspnet-core项目">WPF、WinForms、类库和ASP.NET Core项目<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#wpfwinforms%E7%B1%BB%E5%BA%93%E5%92%8Caspnet-core%E9%A1%B9%E7%9B%AE" class="hash-link" aria-label="WPF、WinForms、类库和ASP.NET Core项目的直接链接" title="WPF、WinForms、类库和ASP.NET Core项目的直接链接">​</a></h2>
<p>这套写法不依赖控制台项目：</p>
<ul>
<li>WPF和WinForms项目的<code>$(TargetPath)</code>会指向其主程序集。</li>
<li>类库项目可以直接保护生成的DLL。</li>
<li>ASP.NET Core项目应在完整发布目录中保留依赖、配置文件和静态资源，仅替换需要保护的业务程序集。</li>
<li>一个解决方案包含多个项目时，只在真正需要保护的项目中加入目标，或者把公共目标提取到单独的<code>.targets</code>文件后按条件导入。</li>
</ul>
<p>使用反射、依赖注入扫描、JSON序列化、XAML绑定、插件加载或P/Invoke时，重命名可能影响运行。应通过忽略列表保留外部依赖的名称，并对启动、登录、核心业务、配置加载和自动更新等流程进行回归测试。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="dotnet-publish和单文件发布注意事项"><code>dotnet publish</code>和单文件发布注意事项<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#dotnet-publish%E5%92%8C%E5%8D%95%E6%96%87%E4%BB%B6%E5%8F%91%E5%B8%83%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" class="hash-link" aria-label="dotnet-publish和单文件发布注意事项的直接链接" title="dotnet-publish和单文件发布注意事项的直接链接">​</a></h2>
<p>本文示例挂接在<code>Build</code>目标之后，适合普通DLL、EXE构建。执行<code>dotnet publish</code>时，发布过程还会在<code>publish</code>目录重新整理文件，因此不要直接把未经检查的<code>publish</code>目录当成混淆结果。</p>
<p>常规发布可先执行<code>dotnet publish -c Release</code>，再用CLI的<code>--input</code>和<code>--output</code>处理发布目录中的主程序集。启用<code>PublishSingleFile</code>时，应将发布得到的单文件EXE作为CLI输入，而不是构建阶段的DLL。建议为单文件项目单独建立发布后目标，并验证解包、混淆、重构后的程序能够在干净环境启动。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="完整示例代码">完整示例代码<a href="https://tutorial.leapever.com/integrate-csharp-obfuscator-cli-into-dotnet-build#%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81" class="hash-link" aria-label="完整示例代码的直接链接" title="完整示例代码的直接链接">​</a></h2>
<p>可以访问GitHub获取完整项目代码: <a href="https://github.com/leapever/csharp-obfuscator-cli-integration" target="_blank" rel="noopener noreferrer">https://github.com/leapever/csharp-obfuscator-cli-integration</a></p>]]></content>
        <category label="C#混淆" term="C#混淆"/>
        <category label=".NET" term=".NET"/>
        <category label="CLI" term="CLI"/>
        <category label="MSBuild" term="MSBuild"/>
        <category label="自动化构建" term="自动化构建"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[恒盾C#混淆加密大师 1.5.0 更新：增强原生化EXE保护并适配.NET 10]]></title>
        <id>https://tutorial.leapever.com/csharp-obfuscator-1.5.0</id>
        <link href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0"/>
        <updated>2026-07-25T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[恒盾C#混淆加密大师 1.5.0 版本现已发布。本次更新聚焦于保护效果、运行兼容性和处理效率，增强了原生化EXE保护能力，适配最新的 .NET 10，并对多项常用混淆功能进行了集中优化。]]></summary>
        <content type="html"><![CDATA[<p>恒盾C#混淆加密大师 1.5.0 版本现已发布。本次更新聚焦于保护效果、运行兼容性和处理效率，增强了原生化EXE保护能力，适配最新的 .NET 10，并对多项常用混淆功能进行了集中优化。</p>
<p><img decoding="async" loading="lazy" alt="C#混淆加密大师1.5.0截图" src="https://tutorial.leapever.com/assets/images/csharp-obf-1.5.0-a4a8fa42bcc29d80e6168f49c6a25375.png" width="2048" height="1580" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<p><a href="https://csharpobf.leapever.com/" target="_blank" rel="noopener noreferrer">点击进入下载页面</a></p>
<p>对于需要保护 C# DLL、EXE、WPF、WinForms、控制台程序以及其他 .NET 应用的开发者来说，1.5.0 是一次以稳定性和实用性为重点的升级。无论是单独启用某项保护，还是组合使用多项混淆功能，新版本都能更好地适应复杂项目和实际发布环境。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="150-版本重点更新">1.5.0 版本重点更新<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#150-%E7%89%88%E6%9C%AC%E9%87%8D%E7%82%B9%E6%9B%B4%E6%96%B0" class="hash-link" aria-label="1.5.0 版本重点更新的直接链接" title="1.5.0 版本重点更新的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-增强原生化exe保护效果">1. 增强原生化EXE保护效果<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#1-%E5%A2%9E%E5%BC%BA%E5%8E%9F%E7%94%9F%E5%8C%96exe%E4%BF%9D%E6%8A%A4%E6%95%88%E6%9E%9C" class="hash-link" aria-label="1. 增强原生化EXE保护效果的直接链接" title="1. 增强原生化EXE保护效果的直接链接">​</a></h3>
<p>1.5.0 进一步增强了原生化EXE的保护效果，可以提高程序被分析和还原的难度，为需要重点保护的 Windows EXE 程序提供更强的安全保障。</p>
<p>这项更新适合用于商业桌面软件、企业内部工具、授权客户端以及包含重要业务逻辑的应用程序。通过升级后的原生化EXE功能，开发者可以在保持程序正常交付和运行的同时，进一步加强对核心代码和软件成果的保护。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-��更新混淆内核适配最新net-10">2. 更新混淆内核，适配最新.NET 10<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#2-%E6%9B%B4%E6%96%B0%E6%B7%B7%E6%B7%86%E5%86%85%E6%A0%B8%E9%80%82%E9%85%8D%E6%9C%80%E6%96%B0net-10" class="hash-link" aria-label="2. 更新混淆内核，适配最新.NET 10的直接链接" title="2. 更新混淆内核，适配最新.NET 10的直接链接">​</a></h3>
<p>随着 .NET 平台持续更新，混淆工具也需要及时适配新的程序格式和开发环境。1.5.0 更新了混淆内核，现已适配最新的 .NET 10，为使用新版本 .NET 构建项目的开发者提供支持。</p>
<p>对于计划升级到 .NET 10，或已经开始使用 .NET 10 开发和发布程序的团队，新版本可以更顺畅地接入现有保护流程。同时，原有 .NET 项目仍可继续使用，便于开发者在不同版本的项目之间保持统一的混淆加密方案。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-提升防篡改功能的兼容性">3. 提升防篡改功能的兼容性<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#3-%E6%8F%90%E5%8D%87%E9%98%B2%E7%AF%A1%E6%94%B9%E5%8A%9F%E8%83%BD%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7" class="hash-link" aria-label="3. 提升防篡改功能的兼容性的直接链接" title="3. 提升防篡改功能的兼容性的直接链接">​</a></h3>
<p>防篡改功能可以帮助开发者降低程序文件被修改后继续运行的风险。1.5.0 提升了该功能的兼容性，使其在更多EXE程序以及多种保护功能组合使用时表现得更加稳定。</p>
<p>对于同时启用函数体隐藏、资源文件混淆或其他保护选项的项目，这项改进可以减少功能之间相互影响的情况，让开发者更方便地根据项目需求组合不同的保护能力。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-提升资源文件混淆的兼容性">4. 提升资源文件混淆的兼容性<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#4-%E6%8F%90%E5%8D%87%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E6%B7%B7%E6%B7%86%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7" class="hash-link" aria-label="4. 提升资源文件混淆的兼容性的直接链接" title="4. 提升资源文件混淆的兼容性的直接链接">​</a></h3>
<p>.NET 程序经常会包含界面资源、文本资源、配置资源以及其他随程序集发布的内容。1.5.0 提升了资源文件混淆的兼容性，使资源保护功能能够适应更多类型的项目。</p>
<p>这项更新对于资源使用较多的 WPF、WinForms 和桌面应用尤其有价值。开发者可以继续保护程序中的资源内容，同时降低混淆后出现资源读取异常或程序运行异常的概率。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="5-提升隐藏函数体的兼容性">5. 提升隐藏函数体的兼容性<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#5-%E6%8F%90%E5%8D%87%E9%9A%90%E8%97%8F%E5%87%BD%E6%95%B0%E4%BD%93%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7" class="hash-link" aria-label="5. 提升隐藏函数体的兼容性的直接链接" title="5. 提升隐藏函数体的兼容性的直接链接">​</a></h3>
<p>隐藏函数体是保护关键业务逻辑的重要功能之一。1.5.0 对该功能进行了兼容性优化，使其能够更稳定地应用于包含复杂调用关系和多种程序结构的项目。</p>
<p>如果程序中包含授权验证、业务规则、数据处理或其他不希望被直接查看的关键逻辑，可以使用隐藏函数体功能提高分析难度。新版本让这项保护能力在实际项目中更易于使用，也更适合与其他混淆选项配合启用。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="6-提升隐藏字符串和数字的兼容性">6. 提升隐藏字符串和数字的兼容性<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#6-%E6%8F%90%E5%8D%87%E9%9A%90%E8%97%8F%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%92%8C%E6%95%B0%E5%AD%97%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7" class="hash-link" aria-label="6. 提升隐藏字符串和数字的兼容性的直接链接" title="6. 提升隐藏字符串和数字的兼容性的直接链接">​</a></h3>
<p>程序中的字符串和数字常常包含接口地址、业务参数、授权信息、状态标识或其他敏感内容。1.5.0 提升了隐藏字符串和数字功能的兼容性，使其可以覆盖更多使用场景，并改善与其他保护功能同时启用时的稳定性。</p>
<p>对于敏感常量较多，或希望减少程序静态信息暴露的项目，这项更新可以提供更完整的保护体验。开发者无需改变原有业务代码，即可继续通过统一配置保护相关内容。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="7-优化核心混淆速度">7. 优化核心混淆速度<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#7-%E4%BC%98%E5%8C%96%E6%A0%B8%E5%BF%83%E6%B7%B7%E6%B7%86%E9%80%9F%E5%BA%A6" class="hash-link" aria-label="7. 优化核心混淆速度的直接链接" title="7. 优化核心混淆速度的直接链接">​</a></h3>
<p>除了保护效果和兼容性提升之外，1.5.0 还优化了核心混淆速度。对于程序集较多、项目体积较大或需要频繁执行混淆的开发者，新版本可以缩短等待时间，提高日常构建和发布效率。</p>
<p>这项优化也更适合自动化构建、持续集成和批量处理场景。团队可以将混淆步骤继续保留在现有发布流程中，同时获得更流畅的处理体验。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="多项保护功能配合使用更加稳定">多项保护功能配合使用更加稳定<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#%E5%A4%9A%E9%A1%B9%E4%BF%9D%E6%8A%A4%E5%8A%9F%E8%83%BD%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E6%9B%B4%E5%8A%A0%E7%A8%B3%E5%AE%9A" class="hash-link" aria-label="多项保护功能配合使用更加稳定的直接链接" title="多项保护功能配合使用更加稳定的直接链接">​</a></h2>
<p>真实项目通常不会只使用单一保护功能，而是会根据程序特点组合启用原生化EXE、防篡改、资源文件混淆、隐藏函数体以及隐藏字符串和数字等功能。</p>
<p>1.5.0 对这些常用能力进行了整体兼容性提升，重点改善多项功能同时启用时的稳定性。对于结构复杂、资源较多或保护要求较高的项目，新版本能够减少反复调整配置的成本，让混淆加密流程更容易融入日常开发和发布工作。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="这次更新适合哪些用户">这次更新适合哪些用户<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#%E8%BF%99%E6%AC%A1%E6%9B%B4%E6%96%B0%E9%80%82%E5%90%88%E5%93%AA%E4%BA%9B%E7%94%A8%E6%88%B7" class="hash-link" aria-label="这次更新适合哪些用户的直接链接" title="这次更新适合哪些用户的直接链接">​</a></h2>
<p>如果你有以下需求，建议升级到 1.5.0：</p>
<ul>
<li>需要增强 Windows EXE 程序的原生化保护效果</li>
<li>正在使用或准备升级到 .NET 10</li>
<li>需要对 C# DLL 或 EXE 进行混淆加密</li>
<li>需要组合使用防篡改、资源文件混淆和函数体隐藏等功能</li>
<li>需要保护程序中的字符串、数字和关键业务逻辑</li>
<li>需要提升大型项目或自动化发布流程中的混淆处理效率</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="总结">总结<a href="https://tutorial.leapever.com/csharp-obfuscator-1.5.0#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>恒盾C#混淆加密大师 1.5.0 是一次围绕保护强度、平台适配、功能兼容性和处理效率展开的重要更新。新版本不仅增强了原生化EXE保护效果并适配最新的 .NET 10，还集中提升了防篡改、资源文件混淆、隐藏函数体、隐藏字符串和数字等核心功能的稳定性。</p>
<p>对于需要在真实项目中长期使用 C# 混淆、DLL加密和EXE保护的开发者来说，1.5.0 能够提供更完整、更稳定且更高效的代码保护体验。</p>]]></content>
        <category label="C#混淆" term="C#混淆"/>
        <category label=".NET 10" term=".NET 10"/>
        <category label="EXE保护" term="EXE保护"/>
        <category label="代码加密" term="代码加密"/>
        <category label="DLL加密" term="DLL加密"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[EXE加密原生内核使用指南：无需系统环境即可运行]]></title>
        <id>https://tutorial.leapever.com/exe-encryptor-native-kernel-guide</id>
        <link href="https://tutorial.leapever.com/exe-encryptor-native-kernel-guide"/>
        <updated>2026-07-12T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用EXE一机一码打包加密大师时，软件默认使用普通内核进行打包，可以满足绝大多数电脑的运行需求。但少数电脑由于系统版本较旧、经过精简、处于内网隔离环境，或安装了较为严格的安全防护软件，打包后的程序可能出现双击没有反应、启动后立即关闭或运行异常的情况。遇到这类问题时，可以尝试切换为原生内核重新打包。如果你不了解EXE一机一码打包加密大师, 可以访问官网查看具体介绍和说明.]]></summary>
        <content type="html"><![CDATA[<p>使用EXE一机一码打包加密大师时，软件默认使用普通内核进行打包，可以满足绝大多数电脑的运行需求。但少数电脑由于系统版本较旧、经过精简、处于内网隔离环境，或安装了较为严格的安全防护软件，打包后的程序可能出现双击没有反应、启动后立即关闭或运行异常的情况。遇到这类问题时，可以尝试切换为<strong>原生内核</strong>重新打包。如果你不了解EXE一机一码打包加密大师, 可以访问官网查看具体介绍和说明.</p>
<p><a href="https://exeenc.leapever.com/" target="_blank" rel="noopener noreferrer">点击进入EXE一机一码打包加密大师官网</a></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="什么是原生内核">什么是原生内核<a href="https://tutorial.leapever.com/exe-encryptor-native-kernel-guide#%E4%BB%80%E4%B9%88%E6%98%AF%E5%8E%9F%E7%94%9F%E5%86%85%E6%A0%B8" class="hash-link" aria-label="什么是原生内核的直接链接" title="什么是原生内核的直接链接">​</a></h2>
<p>在<strong>快速打包</strong>页面的设置区域中，“加密壳”一项提供两种内核可选：<strong>普通内核</strong>和<strong>原生内核</strong>。普通内核是默认选项，需要一定的系统环境支持，适合绝大多数Windows电脑；原生内核则不依赖额外的系统环境，程序可以直接运行，通用性更好，尤其适合运行环境比较特殊的电脑。</p>
<p><img decoding="async" loading="lazy" alt="原生内核" src="https://tutorial.leapever.com/assets/images/exeenc-native-core-b3c0fdad66fc52f246a00e7192a52c07.png" width="1898" height="1220" class="img_SS3x"></p>
<p>两种内核只是加密壳的运行载体不同，不会影响你选择的一机一码、静态密码或网络验证等授权方式，也不会改变激活码的计算方式。切换内核后原有的授权设置可以继续沿用，如果已经生成过激活码，建议切换内核后重新打包并在目标电脑上测试。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="适用场景">适用场景<a href="https://tutorial.leapever.com/exe-encryptor-native-kernel-guide#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="适用场景的直接链接" title="适用场景的直接链接">​</a></h2>
<p>以下情况可以优先考虑切换到原生内核重新打包：</p>
<ul>
<li>打包后的程序在部分电脑上双击没有反应、启动后一闪而过，或者提示缺少组件。</li>
<li>目标电脑系统版本较旧（例如仍在使用Windows 7）、是精简版系统镜像，或者是刚安装不久、组件不全的系统。</li>
<li>软件需要部署在完全离线、无法连接网络更新系统组件的电脑上。</li>
<li>目标电脑处于企业内网、政府机关等环境，安装策略较为严格，无法自由安装额外的系统组件。</li>
<li>已经尝试过兼容模式，问题依然存在，希望进一步提高打包程序的通用性。</li>
</ul>
<p><img decoding="async" loading="lazy" alt="打包问题" src="https://tutorial.leapever.com/assets/images/exeenc-issues-632bae8030eef5167dfe5b3523f6fa9d.png" width="1242" height="1018" class="img_SS3x"></p>
<p>如果打包后的程序在普通内核下已经可以正常运行，无需切换，保持默认设置即可。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用方法">使用方法<a href="https://tutorial.leapever.com/exe-encryptor-native-kernel-guide#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95" class="hash-link" aria-label="使用方法的直接链接" title="使用方法的直接链接">​</a></h2>
<ol>
<li>打开EXE一机一码打包加密大师，进入<strong>快速打包</strong>页面。</li>
<li>按照正常流程选择需要打包的EXE文件，设置软件名称、加密模式等选项。</li>
<li>在设置区域的“加密壳”一项中，选择<strong>原生内核</strong>（默认使用的是普通内核）。</li>
<li>点击“打包”按钮生成加密程序。</li>
<li>将生成的程序复制到目标电脑上测试运行效果，确认可以正常启动和使用。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用建议">使用建议<a href="https://tutorial.leapever.com/exe-encryptor-native-kernel-guide#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="使用建议的直接链接" title="使用建议的直接链接">​</a></h2>
<ul>
<li>建议先使用默认的普通内核打包测试，只有在目标电脑上出现无法启动、运行异常等问题时，再切换为原生内核重新打包。</li>
<li>原生内核和兼容模式可以配合使用：如果单独切换原生内核后问题仍未解决，可以同时勾选兼容模式一起测试。</li>
<li>每次调整内核或其他打包设置后，建议在实际使用的电脑上重新测试一遍，确认无误后再正式对外分发。</li>
</ul>]]></content>
        <category label="EXE加密" term="EXE加密"/>
        <category label="加密壳" term="加密壳"/>
        <category label="原生内核" term="原生内核"/>
        <category label="兼容性" term="兼容性"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[EXE一机一码加密后无法运行？兼容模式使用指南]]></title>
        <id>https://tutorial.leapever.com/exe-encryptor-compatible-mode-guide</id>
        <link href="https://tutorial.leapever.com/exe-encryptor-compatible-mode-guide"/>
        <updated>2026-07-11T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用EXE一机一码打包加密大师后，如果原始EXE可以正常运行，但打包生成的程序出现点击后没有反应、启动后立即关闭、启动时报错或部分功能异常。此类情况通常与原软件自身的运行方式有关，并不一定是加密方式或授权设置有问题, 本文主要介绍如何解决一些常见的兼容性问题。如果你不了解EXE一机一码打包加密大师, 可以访问官网查看具体介绍和说明.]]></summary>
        <content type="html"><![CDATA[<p>使用EXE一机一码打包加密大师后，如果原始EXE可以正常运行，但打包生成的程序出现点击后没有反应、启动后立即关闭、启动时报错或部分功能异常。此类情况通常与原软件自身的运行方式有关，并不一定是加密方式或授权设置有问题, 本文主要介绍如何解决一些常见的兼容性问题。如果你不了解EXE一机一码打包加密大师, 可以访问官网查看具体介绍和说明.</p>
<p><a href="https://exeenc.leapever.com/" target="_blank" rel="noopener noreferrer">点击进入EXE一机一码打包加密大师官网</a></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="解决方案详解">解决方案详解<a href="https://tutorial.leapever.com/exe-encryptor-compatible-mode-guide#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E8%AF%A6%E8%A7%A3" class="hash-link" aria-label="解决方案详解的直接链接" title="解决方案详解的直接链接">​</a></h2>
<p>在普通模式打包时，软件会使用常规方案进行打包，进行高强度加密，适合绝大多数EXE程序。如果打包后的程序可以正常启动和使用，保持默认设置即可。</p>
<p>而部分EXE程序带有自身完整性校验、特殊的启动流程，或者需要与其他程序文件紧密配合；一些使用较老或较少见开发环境制作的软件，也可能对打包后的运行方式比较敏感。遇到这些情况时，开启<strong>兼容模式</strong>通常可以提高打包后程序的适应性，改善无法启动、意外退出或功能运行异常等问题。</p>
<p>使用时，在<strong>快速打包</strong>页面的设置区域找到<strong>兼容模式</strong>，勾选“使用兼容加密模式”，然后重新打包并测试生成的程序。开启兼容模式不会改变您选择的一机一码、静态密码或网络验证方式，也不需要修改原始EXE。</p>
<p><img decoding="async" loading="lazy" alt="兼容模式按钮" src="https://tutorial.leapever.com/assets/images/exeenc-compatible-mode-49e876f9a14b7b8e55a4f0187385647b.png" width="1898" height="1191" class="img_SS3x"></p>
<p>建议先使用默认模式打包；如果默认模式运行正常，就继续使用默认方案。如果默认模式生成的程序无法正常运行，再开启兼容模式重新打包，并在实际使用的电脑上测试。兼容模式主要用于解决原始EXE本身可以运行、加密后才出现异常的情况；如果原始EXE也无法运行，则需要先检查原程序自身的运行条件。</p>]]></content>
        <category label="EXE加密" term="EXE加密"/>
        <category label="一机一码" term="一机一码"/>
        <category label="兼容模式" term="兼容模式"/>
        <category label="软件无法运行" term="软件无法运行"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE工具多实例共享进程功能介绍 - 多开更快并共享登录状态]]></title>
        <id>https://tutorial.leapever.com/html2exe-multi-instance-shared-process</id>
        <link href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process"/>
        <updated>2026-07-07T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[在一些网页应用打包成EXE后，用户可能会习惯同时打开多个窗口。例如后台系统需要一边查看订单列表，一边打开客户详情；运营工具需要同时对比多个页面；或者同一个网站需要频繁打开多个独立窗口。]]></summary>
        <content type="html"><![CDATA[<p>在一些网页应用打包成EXE后，用户可能会习惯同时打开多个窗口。例如后台系统需要一边查看订单列表，一边打开客户详情；运营工具需要同时对比多个页面；或者同一个网站需要频繁打开多个独立窗口。</p>
<p>如果每次双击EXE都完整启动一个新的程序实例，第二个、第三个窗口有时会明显变慢，甚至出现短暂白屏。<strong>多实例共享进程</strong>就是为这类场景准备的功能：在同一个EXE已经运行时，再次打开它，可以更快显示新窗口，并共享同一套登录状态。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="多实例共享进程是什么">多实例共享进程是什么？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%A4%9A%E5%AE%9E%E4%BE%8B%E5%85%B1%E4%BA%AB%E8%BF%9B%E7%A8%8B%E6%98%AF%E4%BB%80%E4%B9%88" class="hash-link" aria-label="多实例共享进程是什么？的直接链接" title="多实例共享进程是什么？的直接链接">​</a></h2>
<p>简单来说，它可以让同一个EXE在多次打开时表现得更像一个完整的多窗口应用：</p>
<ul>
<li>第一次打开 EXE：正常启动程序</li>
<li>程序已经运行时再次打开同一个 EXE：快速打开一个新窗口</li>
<li>新窗口与已有窗口共享登录状态、Cookie、本地存储等数据</li>
<li>用户可以同时使用多个窗口，而不必等待每次都完整启动</li>
</ul>
<p>它不是“单例模式”。单例模式的目标是<strong>只允许一个窗口存在</strong>，再次打开时只会回到已有窗口；多实例共享进程的目标是<strong>允许多个窗口存在</strong>，只是让后续窗口打开得更快、更稳定。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="这个功能能解决什么问题">这个功能能解决什么问题？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E8%83%BD%E8%A7%A3%E5%86%B3%E4%BB%80%E4%B9%88%E9%97%AE%E9%A2%98" class="hash-link" aria-label="这个功能能解决什么问题？的直接链接" title="这个功能能解决什么问题？的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="后续窗口打开更快">后续窗口打开更快<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%90%8E%E7%BB%AD%E7%AA%97%E5%8F%A3%E6%89%93%E5%BC%80%E6%9B%B4%E5%BF%AB" class="hash-link" aria-label="后续窗口打开更快的直接链接" title="后续窗口打开更快的直接链接">​</a></h3>
<p>对于内容较重的网站、后台管理系统、在线工具类页面，完整启动一个新的EXE实例可能需要较长时间。开启多实例共享进程后，在已有窗口运行的情况下再次打开同一个 EXE，通常可以更快显示新窗口。</p>
<p>这对于需要频繁多开的应用尤其明显，例如客服后台、订单系统、数据管理系统、内部办公系统等。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="减少第二个窗口白屏等待">减少第二个窗口白屏等待<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%87%8F%E5%B0%91%E7%AC%AC%E4%BA%8C%E4%B8%AA%E7%AA%97%E5%8F%A3%E7%99%BD%E5%B1%8F%E7%AD%89%E5%BE%85" class="hash-link" aria-label="减少第二个窗口白屏等待的直接链接" title="减少第二个窗口白屏等待的直接链接">​</a></h3>
<p>有些应用在打开第一个窗口时比较正常，但打开第二个窗口时会出现几秒钟白屏后才进入页面。多实例共享进程可以减少这种等待，让第二个及后续窗口更接近“即时打开”的体验。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="多窗口共享登录状态">多窗口共享登录状态<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%A4%9A%E7%AA%97%E5%8F%A3%E5%85%B1%E4%BA%AB%E7%99%BB%E5%BD%95%E7%8A%B6%E6%80%81" class="hash-link" aria-label="多窗口共享登录状态的直接链接" title="多窗口共享登录状态的直接链接">​</a></h3>
<p>开启后，多个窗口会共享同一套登录状态。用户在第一个窗口登录后，再打开第二个窗口，通常不需要重新登录。</p>
<p>这对后台系统和需要登录的网站非常有用：</p>
<ul>
<li>不用每个窗口重复登录</li>
<li>多个窗口之间状态一致</li>
<li>Cookie 和本地保存的数据可以继续使用</li>
<li>用户体验更接近浏览器多窗口</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="更适合多窗口办公">更适合多窗口办公<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E6%9B%B4%E9%80%82%E5%90%88%E5%A4%9A%E7%AA%97%E5%8F%A3%E5%8A%9E%E5%85%AC" class="hash-link" aria-label="更适合多窗口办公的直接链接" title="更适合多窗口办公的直接链接">​</a></h3>
<p>如果你的网页应用本身就适合多窗口使用，这个功能可以让打包后的EXE更接近桌面软件的使用习惯。</p>
<p>例如：</p>
<ul>
<li>一个窗口查看列表，另一个窗口查看详情</li>
<li>一个窗口编辑内容，另一个窗口预览结果</li>
<li>同时打开多个客户、订单、报表页面</li>
<li>多个页面并排对照处理</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="什么时候推荐开启">什么时候推荐开启？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E6%8E%A8%E8%8D%90%E5%BC%80%E5%90%AF" class="hash-link" aria-label="什么时候推荐开启？的直接链接" title="什么时候推荐开启？的直接链接">​</a></h2>
<p>如果你的应用符合下面任意一种情况，建议开启多实例共享进程：</p>
<ul>
<li>用户经常会重复双击同一个EXE打开多个窗口</li>
<li>用户需要同时查看多个页面或多个业务对象</li>
<li>第二个窗口打开时有明显白屏或等待</li>
<li>应用需要保持统一登录状态</li>
<li>应用是后台系统、业务系统、管理系统、客服系统、数据看板等多页面工具</li>
<li>你希望多个窗口像同一个应用的不同窗口，而不是彼此完全独立</li>
</ul>
<p>对于 B 端系统、内部管理系统、需要登录的网站，这个功能通常比较推荐。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="什么时候不建议开启">什么时候不建议开启？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E4%B8%8D%E5%BB%BA%E8%AE%AE%E5%BC%80%E5%90%AF" class="hash-link" aria-label="什么时候不建议开启？的直接链接" title="什么时候不建议开启？的直接链接">​</a></h2>
<p>以下场景可以继续使用默认方式，不一定需要开启：</p>
<ul>
<li>你的应用只需要一个窗口</li>
<li>你希望每次打开EXE都是完全独立的数据环境</li>
<li>你需要同时登录多个不同账号进行测试</li>
<li>你已经开启了隐身模式，希望每次运行都使用独立数据</li>
<li>你启用了禁用缓存，希望每次都尽量重新加载远程内容</li>
<li>你的应用希望“打开第二次”只回到已有窗口，这种情况应使用单例模式</li>
</ul>
<p>如果你的目标是“只能打开一个窗口”，请使用<strong>单例模式</strong>；如果你的目标是“可以打开多个窗口，并且后续窗口更快”，再考虑开启<strong>多实例共享进程</strong>。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="如何开启多实例共享进程">如何开启多实例共享进程<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF%E5%A4%9A%E5%AE%9E%E4%BE%8B%E5%85%B1%E4%BA%AB%E8%BF%9B%E7%A8%8B" class="hash-link" aria-label="如何开启多实例共享进程的直接链接" title="如何开启多实例共享进程的直接链接">​</a></h2>
<p>开启方式很简单：</p>
<ol>
<li>打开 HTML打包EXE 工具</li>
<li>进入<strong>高级设置</strong>页面</li>
<li>勾选<strong>多实例共享进程</strong></li>
<li>正常点击<strong>打包</strong>生成 EXE</li>
</ol>
<p><img decoding="async" loading="lazy" alt="多实例共享进程" src="https://tutorial.leapever.com/assets/images/html2exe-shared-process-031bbe8320e822c78709b7a02d021ec2.png" width="1898" height="1240" class="img_SS3x"></p>
<p>生成后的EXE在第一次打开时正常启动；当它已经运行时，再次双击同一个 EXE，会快速打开新的窗口。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="与单例模式的区别">与单例模式的区别<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E4%B8%8E%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="与单例模式的区别的直接链接" title="与单例模式的区别的直接链接">​</a></h2>
<p>很多用户会把多实例共享进程和单例模式混淆，下面用一句话区分：</p>
<ul>
<li><strong>单例模式</strong>：只允许一个窗口，再次打开时回到已有窗口</li>
<li><strong>多实例共享进程</strong>：允许多个窗口，再次打开时快速打开新窗口</li>
</ul>
<table><thead><tr><th>功能</th><th>单例模式</th><th>多实例共享进程</th></tr></thead><tbody><tr><td>是否允许多个窗口</td><td>不允许</td><td>允许</td></tr><tr><td>再次双击EXE</td><td>回到已有窗口</td><td>打开新窗口</td></tr><tr><td>是否共享登录状态</td><td>共享</td><td>共享</td></tr><tr><td>适合场景</td><td>单窗口应用、后台常驻应用</td><td>多页面办公、多窗口业务系统</td></tr></tbody></table>
<p>因此，这两个功能不需要同时开启。新版工具中，当你勾选其中一个时，会自动取消另一个，避免配置冲突。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="常见问题">常见问题<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98" class="hash-link" aria-label="常见问题的直接链接" title="常见问题的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="开启后是不是每个窗口都能共享登录状态">开启后是不是每个窗口都能共享登录状态？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%BC%80%E5%90%AF%E5%90%8E%E6%98%AF%E4%B8%8D%E6%98%AF%E6%AF%8F%E4%B8%AA%E7%AA%97%E5%8F%A3%E9%83%BD%E8%83%BD%E5%85%B1%E4%BA%AB%E7%99%BB%E5%BD%95%E7%8A%B6%E6%80%81" class="hash-link" aria-label="开启后是不是每个窗口都能共享登录状态？的直接链接" title="开启后是不是每个窗口都能共享登录状态？的直接链接">​</a></h3>
<p>通常可以。只要网站本身使用的是常见的 Cookie、本地存储等登录方式，多个窗口会共享同一套登录状态。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="可以用来同时登录多个账号吗">可以用来同时登录多个账号吗？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E5%90%8C%E6%97%B6%E7%99%BB%E5%BD%95%E5%A4%9A%E4%B8%AA%E8%B4%A6%E5%8F%B7%E5%90%97" class="hash-link" aria-label="可以用来同时登录多个账号吗？的直接链接" title="可以用来同时登录多个账号吗？的直接链接">​</a></h3>
<p>不推荐。多实例共享进程的特点就是共享登录状态，如果你需要同时登录多个账号，更适合使用默认多实例方式，或者使用不同的软件 ID 分别打包。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="为什么需要填写软件-id">为什么需要填写软件 ID？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E5%A1%AB%E5%86%99%E8%BD%AF%E4%BB%B6-id" class="hash-link" aria-label="为什么需要填写软件 ID？的直接链接" title="为什么需要填写软件 ID？的直接链接">​</a></h3>
<p>软件 ID 用于区分不同的打包应用。不同项目建议使用不同的软件 ID，避免不同应用之间的数据互相影响。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="和隐身模式能一起用吗">和隐身模式能一起用吗？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%92%8C%E9%9A%90%E8%BA%AB%E6%A8%A1%E5%BC%8F%E8%83%BD%E4%B8%80%E8%B5%B7%E7%94%A8%E5%90%97" class="hash-link" aria-label="和隐身模式能一起用吗？的直接链接" title="和隐身模式能一起用吗？的直接链接">​</a></h3>
<p>不建议一起使用。隐身模式更强调每次运行使用独立环境，而多实例共享进程强调多个窗口共享同一套状态，两者目标不同。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="和禁用缓存能一起用吗">和禁用缓存能一起用吗？<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E5%92%8C%E7%A6%81%E7%94%A8%E7%BC%93%E5%AD%98%E8%83%BD%E4%B8%80%E8%B5%B7%E7%94%A8%E5%90%97" class="hash-link" aria-label="和禁用缓存能一起用吗？的直接链接" title="和禁用缓存能一起用吗？的直接链接">​</a></h3>
<p>不建议一起使用。禁用缓存更适合频繁更新的远程网页；多实例共享进程更适合需要保留登录状态并快速多开的业务系统。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="总结">总结<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>多实例共享进程适合那些需要频繁打开多个同一EXE窗口的应用。它可以让后续窗口打开更快，减少白屏等待，并共享登录状态，非常适合后台管理、业务系统、客服系统、数据看板等多页面场景。</p>
<p>如果你的用户经常需要多窗口办公，建议在打包时开启这个功能；如果你的应用只需要一个窗口，则继续使用单例模式或默认配置即可。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-multi-instance-shared-process#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html2exe-window-mode-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具四种弹窗方式图文详解</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-tab-mode-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具标签页模式详解</a></li>
<li><a href="https://leapever.com/tutorial/html-pack-exe-function-introduction" target="_blank" rel="noopener noreferrer">HTML打包EXE工具功能介绍</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="多实例" term="多实例"/>
        <category label="性能优化" term="性能优化"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[5分钟学会如何使用HTML打包APK的文件加密功能]]></title>
        <id>https://tutorial.leapever.com/html2apk-local-file-encryption-guide</id>
        <link href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide"/>
        <updated>2026-07-05T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[HTML一键打包APK工具近期新增了数据加密功能, 当在打包本地HTML项目时，支持设置本地文件加密Key。填写Key后，工具会对项目中的HTML、JS、CSS、JSON、XML等文本文件进行加密，可以保护你的代码和资源文件]]></summary>
        <content type="html"><![CDATA[<p>HTML一键打包APK工具近期新增了数据加密功能, 当在打包<strong>本地HTML项目</strong>时，支持设置<strong>本地文件加密Key</strong>。填写Key后，工具会对项目中的HTML、JS、CSS、JSON、XML等文本文件进行加密，可以保护你的代码和资源文件</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/apkpacker/download" target="_blank" rel="noopener noreferrer">立即下载HTML一键打包APK工具</a></li>
<li><a href="https://leapever.com/intro/apk-packer" target="_blank" rel="noopener noreferrer">HTML一键打包APK工具官网</a></li>
<li><a href="https://leapever.com/intro/apk-packer/docs/intro" target="_blank" rel="noopener noreferrer">查看完整使用文档</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="这个功能有什么用">这个功能有什么用？<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E8%BF%99%E4%B8%AA%E5%8A%9F%E8%83%BD%E6%9C%89%E4%BB%80%E4%B9%88%E7%94%A8" class="hash-link" aria-label="这个功能有什么用？的直接链接" title="这个功能有什么用？的直接链接">​</a></h2>
<p>本地文件加密功能适合希望保护离线HTML项目内容的用户。例如：</p>
<ul>
<li>VR全景项目中的页面脚本和配置文件</li>
<li>RPG Maker MV/MZ等本地网页游戏项目</li>
<li>离线课件、培训资料、产品展示应用</li>
<li>企业内部使用的本地HTML应用</li>
</ul>
<p>开启后，打包进APK的部分文本资源不会再以普通文件形式直接存放，能起到保护你的代码和资源的作用。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="配置位置">配置位置<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E9%85%8D%E7%BD%AE%E4%BD%8D%E7%BD%AE" class="hash-link" aria-label="配置位置的直接链接" title="配置位置的直接链接">​</a></h2>
<p>在打包工具的<strong>快速打包</strong>页面中，找到<strong>本地文件加密Key</strong>输入框。</p>
<p><img decoding="async" loading="lazy" alt="本地文件加密Key配置位置" src="https://tutorial.leapever.com/assets/images/html2apk-local-file-encryption-key-dbbd3a8afe45dd04ab8a4bdd391e3eb0.png" width="2100" height="1202" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="如何开启本地文件加密">如何开启本地文件加密？<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%E5%8A%A0%E5%AF%86" class="hash-link" aria-label="如何开启本地文件加密？的直接链接" title="如何开启本地文件加密？的直接链接">​</a></h2>
<p>使用步骤很简单：</p>
<ol>
<li>在<strong>网址或本地HTML文件路径</strong>中选择本地HTML主文件。</li>
<li>设置APP名称、版本号、包名等常规配置。</li>
<li>在<strong>本地文件加密Key</strong>中填写一段自定义内容，例如 <code>mykey123</code>。</li>
<li>点击开始打包，生成APK。</li>
</ol>
<p>只要填写了Key，打包时就会启用本地文件加密。加密完成后, 再次查看apk内部的文件时, 则会看到乱码文件</p>
<p><img decoding="async" loading="lazy" alt="乱码文件" src="https://tutorial.leapever.com/assets/images/html2apk-encrypted-file-918b41239d558122b249c406255bdb75.png" width="2198" height="1488" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="不填和填写有什么区别">不填和填写有什么区别？<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E4%B8%8D%E5%A1%AB%E5%92%8C%E5%A1%AB%E5%86%99%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="不填和填写有什么区别？的直接链接" title="不填和填写有什么区别？的直接链接">​</a></h2>
<p><strong>不填写本地文件加密Key</strong>：不启用本地文件加密，按照普通方式打包。</p>
<p><strong>填写任意内容</strong>：启用本地文件加密。可以填写字母、数字或字母数字组合。例如 <code>abc123</code>、<code>myapp2026</code> 都可以。</p>
<ul>
<li>不填：不加密</li>
<li>填其他内容：加密</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="会加密哪些文件">会加密哪些文件？<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E4%BC%9A%E5%8A%A0%E5%AF%86%E5%93%AA%E4%BA%9B%E6%96%87%E4%BB%B6" class="hash-link" aria-label="会加密哪些文件？的直接链接" title="会加密哪些文件？的直接链接">​</a></h2>
<p>本地文件加密主要处理项目中的文本类资源，例如：</p>
<ul>
<li>HTML页面文件</li>
<li>JavaScript脚本文件</li>
<li>CSS样式文件</li>
<li>JSON配置文件</li>
<li>XML配置文件</li>
<li>TXT、CSV等文本文件</li>
</ul>
<p>图片、音频、视频、字体等二进制文件不会进行此类加密处理以确保整个apk运行速度不会受影响</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="适用范围">适用范围<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E9%80%82%E7%94%A8%E8%8C%83%E5%9B%B4" class="hash-link" aria-label="适用范围的直接链接" title="适用范围的直接链接">​</a></h2>
<p>如果您填写的是 <code>http</code> 或 <code>https</code> 开头的网址，页面内容来自网络服务器，本地文件加密不会对远程网页内容生效。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用建议">使用建议<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="使用建议的直接链接" title="使用建议的直接链接">​</a></h2>
<p>建议在以下情况下开启本地文件加密：</p>
<ul>
<li>项目中包含较多HTML、JS、CSS文件</li>
<li>不希望用户轻易查看本地页面源码</li>
<li>项目是离线展示、离线课件、离线全景或离线游戏</li>
<li>希望在不影响图片、视频等资源的前提下，对核心文本文件做基础保护</li>
</ul>
<p>如果只是临时测试打包，或者项目内容本身不需要保护，可以不填写Key。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="常见问题">常见问题<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98" class="hash-link" aria-label="常见问题的直接链接" title="常见问题的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="填写key后app运行方式会变化吗">填写Key后，APP运行方式会变化吗？<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E5%A1%AB%E5%86%99key%E5%90%8Eapp%E8%BF%90%E8%A1%8C%E6%96%B9%E5%BC%8F%E4%BC%9A%E5%8F%98%E5%8C%96%E5%90%97" class="hash-link" aria-label="填写Key后，APP运行方式会变化吗？的直接链接" title="填写Key后，APP运行方式会变化吗？的直接链接">​</a></h3>
<p>不会影响功能。打包后的APP会自动读取加密后的本地文件，用户无需额外操作。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="忘记key会影响已打包apk运行吗">忘记Key会影响已打包APK运行吗？<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E5%BF%98%E8%AE%B0key%E4%BC%9A%E5%BD%B1%E5%93%8D%E5%B7%B2%E6%89%93%E5%8C%85apk%E8%BF%90%E8%A1%8C%E5%90%97" class="hash-link" aria-label="忘记Key会影响已打包APK运行吗？的直接链接" title="忘记Key会影响已打包APK运行吗？的直接链接">​</a></h3>
<p>不会。Key会在打包时写入APP配置中，已生成的APK可以正常运行。但如果之后重新打包同一个项目，需要继续填写想要使用的Key。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2apk-local-file-encryption-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/apk-packer-no-verify-version-launch" target="_blank" rel="noopener noreferrer">HTML一键打包APK工具免认证版本介绍</a></li>
<li><a href="https://leapever.com/tutorial/html-apk-file-download" target="_blank" rel="noopener noreferrer">HTML打包APK中的文件下载功能详解</a></li>
<li><a href="https://leapever.com/tutorial/html2apk-package-name-guide" target="_blank" rel="noopener noreferrer">HTML一键打包APK工具使用指南 - 为什么APP安装时会覆盖</a></li>
<li><a href="https://leapever.com/intro/apk-packer/docs/intro" target="_blank" rel="noopener noreferrer">HTML一键打包APK完整使用文档</a></li>
</ul>]]></content>
        <category label="HTML打包APK" term="HTML打包APK"/>
        <category label="本地文件加密" term="本地文件加密"/>
        <category label="APK打包" term="APK打包"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE设置图标后桌面仍显示默认图标？刷新桌面图标缓存解决方法]]></title>
        <id>https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache</id>
        <link href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache"/>
        <updated>2026-06-24T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用HTML打包EXE工具制作Windows桌面程序时，很多用户都会设置一个自定义图标：例如公司Logo、产品图标、课程封面图标，或者KRPano全景项目的品牌图标。打包参数已经填好，图标文件也选择正确，生成的EXE文件属性里看起来也没问题，但放到桌面上以后，显示的却还是Windows默认图标，或者仍然是上一次打包留下来的旧图标。]]></summary>
        <content type="html"><![CDATA[<p>使用HTML打包EXE工具制作Windows桌面程序时，很多用户都会设置一个自定义图标：例如公司Logo、产品图标、课程封面图标，或者KRPano全景项目的品牌图标。打包参数已经填好，图标文件也选择正确，生成的EXE文件属性里看起来也没问题，但放到桌面上以后，显示的却还是Windows默认图标，或者仍然是上一次打包留下来的旧图标。</p>
<p>这种情况看起来像是“图标没有打包进去”，但实际原因往往不是打包失败，而是Windows桌面图标缓存没有及时更新。本文就介绍这个问题的常见场景、原因分析、排查方法，以及如何在HTML打包EXE工具中通过“刷新桌面图标缓存”功能快速解决。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="常见现象">常见现象<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E5%B8%B8%E8%A7%81%E7%8E%B0%E8%B1%A1" class="hash-link" aria-label="常见现象的直接链接" title="常见现象的直接链接">​</a></h2>
<p>在HTML项目打包为EXE之后，图标异常通常有几种表现：</p>
<ol>
<li>打包时已经选择了 <code>.ico</code> 图标，但桌面上仍然显示默认白色程序图标。</li>
<li>第一次打包显示正常，第二次更换图标后，桌面快捷方式仍显示旧图标。</li>
<li>安装包重新安装后，开始菜单或桌面快捷方式图标没有变化。</li>
<li>同一个EXE文件复制到不同文件夹后，有的地方图标正常，有的地方仍然显示异常。</li>
<li>文件属性、任务栏、资源管理器预览中的图标表现不一致。</li>
</ol>
<p>如果你确认图标文件路径正确，图标格式也没有问题，那么这些现象大概率和Windows图标缓存有关。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="为什么会出现图标不更新">为什么会出现图标不更新？<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E5%87%BA%E7%8E%B0%E5%9B%BE%E6%A0%87%E4%B8%8D%E6%9B%B4%E6%96%B0" class="hash-link" aria-label="为什么会出现图标不更新？的直接链接" title="为什么会出现图标不更新？的直接链接">​</a></h2>
<p>Windows为了提高资源管理器、桌面和开始菜单的显示速度，会把应用程序图标、快捷方式图标等信息缓存起来。这样每次打开文件夹或显示桌面时，系统不需要重新从EXE文件里读取图标资源，而是直接使用缓存结果。</p>
<p>这套机制在日常使用中可以提升性能，但在频繁打包、测试、覆盖安装程序时，就容易造成一个问题：<strong>文件已经更新了，图标缓存却还没有更新</strong>。</p>
<p>对HTML打包EXE这类工具来说，开发和测试阶段经常会出现下面的操作：</p>
<ul>
<li>使用同一个输出文件名反复打包。</li>
<li>多次更换程序图标。</li>
<li>反复安装、卸载、覆盖安装测试版。</li>
<li>桌面快捷方式名称相同，但指向的程序内容已经改变。</li>
<li>在同一台电脑上测试多个版本的EXE。</li>
</ul>
<p>这些操作都会增加Windows继续使用旧图标缓存的概率。于是用户看到的结果就是：明明新图标已经写入EXE，桌面显示却没有立刻变。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="先确认不是图标文件本身的问题">先确认不是图标文件本身的问题<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E5%85%88%E7%A1%AE%E8%AE%A4%E4%B8%8D%E6%98%AF%E5%9B%BE%E6%A0%87%E6%96%87%E4%BB%B6%E6%9C%AC%E8%BA%AB%E7%9A%84%E9%97%AE%E9%A2%98" class="hash-link" aria-label="先确认不是图标文件本身的问题的直接链接" title="先确认不是图标文件本身的问题的直接链接">​</a></h2>
<p>在刷新缓存之前，可以先做几个简单检查，避免把配置问题误判为缓存问题。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-确认图标格式正确">1. 确认图标格式正确<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#1-%E7%A1%AE%E8%AE%A4%E5%9B%BE%E6%A0%87%E6%A0%BC%E5%BC%8F%E6%AD%A3%E7%A1%AE" class="hash-link" aria-label="1. 确认图标格式正确的直接链接" title="1. 确认图标格式正确的直接链接">​</a></h3>
<p>Windows程序图标建议使用 <code>.ico</code> 文件，而不是直接使用 <code>.png</code>、<code>.jpg</code> 或其他图片格式。一个合格的ICO文件通常会包含多个尺寸，例如 <code>16x16</code>、<code>32x32</code>、<code>48x48</code>、<code>256x256</code>，这样在桌面、任务栏、资源管理器不同位置都能正常显示。</p>
<p>如果ICO文件本身只有一个很小的尺寸，或者由图片强行改后缀得到，可能导致显示模糊、显示异常，甚至无法被正确识别。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-确认打包时选择的是最新图标">2. 确认打包时选择的是最新图标<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#2-%E7%A1%AE%E8%AE%A4%E6%89%93%E5%8C%85%E6%97%B6%E9%80%89%E6%8B%A9%E7%9A%84%E6%98%AF%E6%9C%80%E6%96%B0%E5%9B%BE%E6%A0%87" class="hash-link" aria-label="2. 确认打包时选择的是最新图标的直接链接" title="2. 确认打包时选择的是最新图标的直接链接">​</a></h3>
<p>如果项目目录里有多个相似图标，例如：</p>
<div class="language-text codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-text codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">app.ico</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">app-new.ico</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">logo.ico</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">logo-final.ico</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>建议在打包工具中重新选择一次图标文件，确认路径指向的就是当前要使用的ICO文件。尤其是在不同电脑之间迁移项目时，原来的本地路径可能已经失效。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-换一个文件名测试">3. 换一个文件名测试<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#3-%E6%8D%A2%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%90%8D%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="3. 换一个文件名测试的直接链接" title="3. 换一个文件名测试的直接链接">​</a></h3>
<p>如果你一直用同一个文件名反复输出，例如 <code>myapp.exe</code>，可以临时换成 <code>myapp-test-icon.exe</code> 再打包一次。如果新文件名下图标显示正常，而旧文件名仍显示旧图标，那么基本可以判断是系统缓存导致的。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="如何刷新windows桌面图标缓存">如何刷新Windows桌面图标缓存？<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E5%A6%82%E4%BD%95%E5%88%B7%E6%96%B0windows%E6%A1%8C%E9%9D%A2%E5%9B%BE%E6%A0%87%E7%BC%93%E5%AD%98" class="hash-link" aria-label="如何刷新Windows桌面图标缓存？的直接链接" title="如何刷新Windows桌面图标缓存？的直接链接">​</a></h2>
<p>传统做法通常是手动重启资源管理器，或者删除系统图标缓存文件后重启Windows。常见方法包括：</p>
<ul>
<li>在任务管理器中重启“Windows资源管理器”。</li>
<li>通过命令行结束并重新启动 <code>explorer.exe</code>。</li>
<li>删除IconCache相关缓存文件后重新登录系统。</li>
<li>直接重启电脑。</li>
</ul>
<p>这些方法都能在一定程度上刷新图标，但对普通用户来说不够直观。尤其是在频繁测试打包效果时，每次手动打开任务管理器或重启电脑都比较麻烦。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="在html打包exe工具中一键刷新桌面图标缓存">在HTML打包EXE工具中一键刷新桌面图标缓存<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E5%9C%A8html%E6%89%93%E5%8C%85exe%E5%B7%A5%E5%85%B7%E4%B8%AD%E4%B8%80%E9%94%AE%E5%88%B7%E6%96%B0%E6%A1%8C%E9%9D%A2%E5%9B%BE%E6%A0%87%E7%BC%93%E5%AD%98" class="hash-link" aria-label="在HTML打包EXE工具中一键刷新桌面图标缓存的直接链接" title="在HTML打包EXE工具中一键刷新桌面图标缓存的直接链接">​</a></h2>
<p>HTML打包EXE工具已经内置了刷新桌面图标缓存功能。如果你遇到设置图标后桌面仍显示默认图标、旧图标的问题，可以在工具顶部菜单中点击 <code>文件 -&gt; 刷新桌面图标缓存</code></p>
<p><img decoding="async" loading="lazy" alt="refresh-icon" src="https://tutorial.leapever.com/assets/images/refresh-icon-8c443b023c74b35e364664b1a53d6b08.png" width="1898" height="1240" class="img_SS3x"></p>
<p>点击后，工具会提示确认操作。确认后会刷新Windows桌面图标显示状态，让系统重新加载桌面和快捷方式图标。刷新完成后，再查看桌面快捷方式或重新复制生成的EXE文件，通常就能看到新的图标。</p>
<p>这个功能适合下面几类场景：</p>
<ol>
<li>HTML打包EXE后图标显示为默认图标。</li>
<li>更换图标重新打包后，桌面仍然显示旧图标。</li>
<li>安装版EXE重新安装后，桌面快捷方式图标没有更新。</li>
<li>给客户演示前，需要确认桌面图标已经刷新到最新状态。</li>
<li>同一台电脑上连续测试多个打包版本，图标显示混乱。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="刷新后仍不正常怎么办">刷新后仍不正常怎么办？<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E5%88%B7%E6%96%B0%E5%90%8E%E4%BB%8D%E4%B8%8D%E6%AD%A3%E5%B8%B8%E6%80%8E%E4%B9%88%E5%8A%9E" class="hash-link" aria-label="刷新后仍不正常怎么办？的直接链接" title="刷新后仍不正常怎么办？的直接链接">​</a></h2>
<p>如果刷新桌面图标缓存后，图标仍然没有恢复，可以继续检查下面几项。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-删除旧快捷方式后重新创建">1. 删除旧快捷方式后重新创建<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#1-%E5%88%A0%E9%99%A4%E6%97%A7%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E5%90%8E%E9%87%8D%E6%96%B0%E5%88%9B%E5%BB%BA" class="hash-link" aria-label="1. 删除旧快捷方式后重新创建的直接链接" title="1. 删除旧快捷方式后重新创建的直接链接">​</a></h3>
<p>有时桌面快捷方式本身也会保留旧的显示信息。可以删除旧快捷方式，再从最新生成的EXE或安装目录重新创建快捷方式。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-改变输出文件名">2. 改变输出文件名<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#2-%E6%94%B9%E5%8F%98%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%90%8D" class="hash-link" aria-label="2. 改变输出文件名的直接链接" title="2. 改变输出文件名的直接链接">​</a></h3>
<p>Windows对同一路径、同一文件名的图标缓存更容易复用旧结果。测试阶段如果频繁更换图标，可以临时改变输出文件名或安装目录名，帮助判断是否仍是缓存问题。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-检查安装包配置">3. 检查安装包配置<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#3-%E6%A3%80%E6%9F%A5%E5%AE%89%E8%A3%85%E5%8C%85%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="3. 检查安装包配置的直接链接" title="3. 检查安装包配置的直接链接">​</a></h3>
<p>如果你打包的是安装版EXE，请检查安装目录、桌面快捷方式名称和程序文件名是否符合预期。不同版本使用相同安装目录时，系统更容易沿用已有快捷方式和缓存。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-重新生成ico文件">4. 重新生成ICO文件<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#4-%E9%87%8D%E6%96%B0%E7%94%9F%E6%88%90ico%E6%96%87%E4%BB%B6" class="hash-link" aria-label="4. 重新生成ICO文件的直接链接" title="4. 重新生成ICO文件的直接链接">​</a></h3>
<p>如果多个位置都无法正常显示图标，建议重新生成一个标准ICO文件，再重新打包测试。推荐使用包含多尺寸的ICO，不要只放单一尺寸图片。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="总结">总结<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>HTML打包EXE设置图标后仍显示默认图标，不一定是图标没有写入EXE，也不一定是打包工具没有生效。很多时候，真正的原因是Windows为了提升显示速度而复用了旧的桌面图标缓存。</p>
<p>排查这类问题时，可以按顺序确认图标格式、图标路径、输出文件名和安装包配置。如果确认配置没有问题，再通过HTML打包EXE工具中的 <strong>文件 -&gt; 刷新桌面图标缓存</strong> 功能刷新系统图标显示，就能解决大多数“新图标不显示”“旧图标不更新”“桌面显示默认图标”的问题。</p>
<p>对于经常制作HTML桌面程序、KRPano全景EXE、WebGL离线程序、课件EXE或产品演示程序的用户来说，这个功能可以减少反复重启电脑和手动清理缓存的麻烦，让打包测试流程更顺畅。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关链接">相关链接<a href="https://tutorial.leapever.com/html2exe-refresh-desktop-icon-cache#%E7%9B%B8%E5%85%B3%E9%93%BE%E6%8E%A5" class="hash-link" aria-label="相关链接的直接链接" title="相关链接的直接链接">​</a></h2>
<ul>
<li><a href="https://html2exe.leapever.com/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="桌面图标缓存" term="桌面图标缓存"/>
        <category label="EXE图标" term="EXE图标"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE工具2.3.0版本更新 (附2026最新版包含免费无广告内核下载地址)]]></title>
        <id>https://tutorial.leapever.com/html2exe-2-3-0-update</id>
        <link href="https://tutorial.leapever.com/html2exe-2-3-0-update"/>
        <updated>2026-06-21T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文主要介绍HTML一键打包EXE工具2026最新版2.3.0更新内容，包括新增功能、优化修复内容，以及HTML项目快速打包为Windows EXE程序的基础流程。]]></summary>
        <content type="html"><![CDATA[<p>本文主要介绍HTML一键打包EXE工具2026最新版2.3.0更新内容，包括新增功能、优化修复内容，以及HTML项目快速打包为Windows EXE程序的基础流程。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="工具概述">工具概述<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E5%B7%A5%E5%85%B7%E6%A6%82%E8%BF%B0" class="hash-link" aria-label="工具概述的直接链接" title="工具概述的直接链接">​</a></h2>
<p>HTML一键打包EXE工具支持将本地HTML项目或在线网站打包为Windows平台下的EXE可执行程序，适用于KRPano全景项目、WebGL项目、HTML5游戏、电子课件、产品演示、离线资料包等多种场景。用户可以自定义程序图标、窗口标题、窗口模式、安装包信息、授权验证方式和多种专用功能，无需搭建复杂的桌面开发环境，即可把网页项目转换为可独立运行的桌面应用。</p>
<p>2.3.0版本在原有打包能力基础上，重点增强了配置管理、数据保护、窗口形态、授权试用和原生API扩展能力，适合需要长期维护多个打包项目、需要保护本地或远程资源、或希望制作更接近原生桌面软件体验的用户升级使用。</p>
<p><img decoding="async" loading="lazy" alt="HTML打包EXE工具" src="https://tutorial.leapever.com/assets/images/250006-20250604153820444-182217834-9fc29ec042f48adabd6daee0df031c1d.png" width="1176" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="2026最新版本下载">2026最新版本下载<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#2026%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%E4%B8%8B%E8%BD%BD" class="hash-link" aria-label="2026最新版本下载的直接链接" title="2026最新版本下载的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">点击下载HTML打包EXE工具最新版</a></li>
<li><a href="https://html2exe.leapever.com/" target="_blank" rel="noopener noreferrer">点击查看HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="功能特性">功能特性<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7" class="hash-link" aria-label="功能特性的直接链接" title="功能特性的直接链接">​</a></h2>
<ol>
<li>无需配置开发环境，选择HTML入口文件或网址即可开始打包</li>
<li>支持Chrome内核与WebView2内核，可根据项目兼容性、体积和授权需求灵活选择</li>
<li>支持自定义程序图标、标题、窗口大小、全屏、无边框、托盘、开机启动、退出提示等桌面应用选项</li>
<li>支持离线一机一码、网络验证、试用期、使用次数、静态密码等多种授权控制方式</li>
<li>支持本地文件加密、远程数据加密、附件打包、配置导入导出、标签页窗口和自定义菜单栏</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="230更新内容">2.3.0更新内容<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#230%E6%9B%B4%E6%96%B0%E5%86%85%E5%AE%B9" class="hash-link" aria-label="2.3.0更新内容的直接链接" title="2.3.0更新内容的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="新增功能">新增功能<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E6%96%B0%E5%A2%9E%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="新增功能的直接链接" title="新增功能的直接链接">​</a></h3>
<ul>
<li>新增<code>setRequestHeaders</code> API，可在程序运行时设置请求头，方便处理鉴权、语言、来源标识等请求场景</li>
<li>新增自定义EXE菜单栏功能，可按项目需求配置菜单项，让打包后的程序更接近标准桌面软件</li>
</ul>
<p><img decoding="async" loading="lazy" alt="自定义菜单栏配置" src="https://tutorial.leapever.com/assets/images/html2exe-custom-menu-setting-e788fb34ad678a1e2b50b930d522ed35.png" width="1176" height="768" class="img_SS3x"></p>
<ul>
<li>新增数据加密支持，可对本地或远程文件进行高强度加密，降低HTML资源、配置文件和业务数据被直接查看的风险</li>
</ul>
<p><img decoding="async" loading="lazy" alt="数据加密配置" src="https://tutorial.leapever.com/assets/images/html2exe-data-encryption-setting-d379ea9a9a124508d5669d2709180ae3.png" width="1365" height="582" class="img_SS3x"></p>
<ul>
<li>新增历史记录保存和打包配置导出功能，便于管理多个项目，也方便在不同电脑之间复用打包参数</li>
</ul>
<p><img decoding="async" loading="lazy" alt="导入导出打包配置" src="https://tutorial.leapever.com/assets/images/html2exe-export-and-import-84e075cb8412878905e300ce72a9af7f.png" width="1898" height="636" class="img_SS3x"></p>
<ul>
<li>离线一机一码新增允许修改时间次数支持，可更灵活地控制授权时间调整策略</li>
<li>输入框新增复制粘贴功能，配置网址、密钥、路径等内容时操作更方便</li>
<li>新增标签页模式窗口，可将多个页面组织在同一个程序窗口中展示</li>
</ul>
<p><img decoding="async" loading="lazy" alt="标签页模式预览" src="https://tutorial.leapever.com/assets/images/html2exe-tab-mode-preview-0a68f5d83a8ca3197a16a76f4d6546e1.png" width="1127" height="768" class="img_SS3x"></p>
<ul>
<li>新增<code>getVersion</code> API和<code>isTrial</code> API，方便网页侧读取程序版本和当前试用状态</li>
<li>新增安装包文件路径与桌面显示名称配置支持，安装程序的输出和桌面展示更易控制</li>
<li>新增静态密码功能，可为打包后的程序增加简单直接的访问保护</li>
<li>新增启动图片功能，程序启动时可展示自定义启动图，提升品牌展示和加载过渡体验</li>
</ul>
<p><img decoding="async" loading="lazy" alt="启动图片配置" src="https://tutorial.leapever.com/assets/images/html2exe-splash-setting-d86c8acc9412d62460e83db815300d78.png" width="1176" height="768" class="img_SS3x"></p>
<ul>
<li>新增仅托盘显示功能，适合需要后台常驻或轻量入口的桌面应用</li>
<li>新增附件功能，可将额外文件随程序一起打包，便于携带文档、资源包、示例数据等内容</li>
<li>新增刷新桌面图标功能，解决部分系统环境下桌面图标更新不及时的问题</li>
<li>离线一机一码新增试用功能，可在离线授权场景中提供试用体验</li>
<li>新增<code>isOfflineTrial</code> API和<code>setClipboardString</code> API，可读取离线试用状态并写入剪切板内容</li>
<li>新增多实例共享进程支持，适合需要同时打开多个窗口或多个任务实例的使用场景</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="性能优化">性能优化<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96" class="hash-link" aria-label="性能优化的直接链接" title="性能优化的直接链接">​</a></h3>
<ul>
<li>优化离线一机一码和网络验证授权框UI显示效果，授权操作界面更清晰</li>
<li>优化配置错误提示效果，配置异常时更容易定位问题</li>
<li>优化整体界面UI效果，提升日常打包操作体验</li>
<li>优化打包内核，提升打包处理性能和运行稳定性</li>
<li>优化透明窗口支持，无边框、透明背景等窗口效果表现更好</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="问题修复">问题修复<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E9%97%AE%E9%A2%98%E4%BF%AE%E5%A4%8D" class="hash-link" aria-label="问题修复的直接链接" title="问题修复的直接链接">​</a></h3>
<ul>
<li>修复某些时候网络验证激活后失效的问题</li>
<li>修复某些时候会额外创建空文件夹的问题</li>
<li>修复选择不同内核时，某些配置可能无法使用的问题</li>
<li>修复一些文本显示问题</li>
<li>修复某些API不可用的问题</li>
</ul>
<p>详细使用说明可参考：<a href="https://html2exe.leapever.com/docs/intro" target="_blank" rel="noopener noreferrer">HTML打包EXE官方文档</a>。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="打包流程">打包流程<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E6%89%93%E5%8C%85%E6%B5%81%E7%A8%8B" class="hash-link" aria-label="打包流程的直接链接" title="打包流程的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-选择资源">1. 选择资源<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#1-%E9%80%89%E6%8B%A9%E8%B5%84%E6%BA%90" class="hash-link" aria-label="1. 选择资源的直接链接" title="1. 选择资源的直接链接">​</a></h3>
<ul>
<li>若打包本地HTML项目，点击“打开本地HTML文件”，选择项目入口HTML文件，例如<code>index.html</code>或KRPano项目中的<code>tour.html</code>。</li>
</ul>
<p><img decoding="async" loading="lazy" alt="选择本地HTML文件" src="https://tutorial.leapever.com/assets/images/250006-20230214162357284-296790017-0f7363e6db31043cb67b0cd29cd47f2c.png" width="1570" height="906" class="img_SS3x"></p>
<ul>
<li>若打包在线网站，在网址输入框中填写以<code>http</code>或<code>https</code>开头的网站地址。</li>
</ul>
<p><img decoding="async" loading="lazy" alt="输入网址" src="https://tutorial.leapever.com/assets/images/250006-20250426094531947-500151103-b764aa5f3393ddf1c6e22ece83335707.png" width="1176" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-配置程序信息">2. 配置程序信息<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#2-%E9%85%8D%E7%BD%AE%E7%A8%8B%E5%BA%8F%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="2. 配置程序信息的直接链接" title="2. 配置程序信息的直接链接">​</a></h3>
<ul>
<li>可按需设置程序图标、窗口标题、软件ID、安装包信息、桌面显示名称等内容。若需要发布安装包，建议为每个项目设置独立的软件ID，避免不同程序之间互相覆盖。</li>
</ul>
<p><img decoding="async" loading="lazy" alt="安装包配置" src="https://tutorial.leapever.com/assets/images/html2exe-installer-config-panel-0916943634b1984b01568076df32b08d.png" width="1176" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-设置高级功能">3. 设置高级功能<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#3-%E8%AE%BE%E7%BD%AE%E9%AB%98%E7%BA%A7%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="3. 设置高级功能的直接链接" title="3. 设置高级功能的直接链接">​</a></h3>
<ul>
<li>根据项目需要开启数据加密、附件打包、自定义菜单栏、标签页模式、启动图片、授权验证、静态密码等功能。2.3.0版本新增的配置历史管理功能，也可以用于保存当前项目参数，后续重复打包时可直接载入。</li>
</ul>
<p><img decoding="async" loading="lazy" alt="附件打包配置" src="https://tutorial.leapever.com/assets/images/html2exe-extra-files-pack-setting-e4e1b518bfdd47a5d74de89777ffee76.png" width="1176" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-完成打包">4. 完成打包<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#4-%E5%AE%8C%E6%88%90%E6%89%93%E5%8C%85" class="hash-link" aria-label="4. 完成打包的直接链接" title="4. 完成打包的直接链接">​</a></h3>
<p>确认配置后点击打包按钮，等待工具生成EXE文件或安装包。打包完成后，可直接在Windows电脑上运行生成的程序，离线项目无需再搭建本地服务器，在线网站则会以桌面应用形式打开。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="升级建议">升级建议<a href="https://tutorial.leapever.com/html2exe-2-3-0-update#%E5%8D%87%E7%BA%A7%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="升级建议的直接链接" title="升级建议的直接链接">​</a></h2>
<p>建议正在使用HTML打包EXE工具的用户升级到2.3.0版本。尤其是需要自定义菜单栏、数据加密、标签页窗口、配置导入导出、离线试用、启动图片、附件打包或更多API能力的项目，升级后可以减少手工处理步骤，并获得更稳定的授权验证和打包体验。</p>]]></content>
        <category label="HTML转EXE" term="HTML转EXE"/>
        <category label="HTML打包" term="HTML打包"/>
        <category label="版本更新" term="版本更新"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE离线一机一码新增试用功能 - 支持先试用再激活提升转化率]]></title>
        <id>https://tutorial.leapever.com/html2exe-offline-license-trial</id>
        <link href="https://tutorial.leapever.com/html2exe-offline-license-trial"/>
        <updated>2026-06-16T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[近期有朋友咨询：离线一机一码能不能加一个试用功能？用户第一次打开软件时，如果还没有激活码，希望可以先体验几次，确认软件内容和功能符合需求后再联系作者购买激活码。这样既保留离线授权的安全性，也能降低用户第一次使用时的决策成本，提升后续转化率。]]></summary>
        <content type="html"><![CDATA[<p>近期有朋友咨询：离线一机一码能不能加一个试用功能？用户第一次打开软件时，如果还没有激活码，希望可以先体验几次，确认软件内容和功能符合需求后再联系作者购买激活码。这样既保留离线授权的安全性，也能降低用户第一次使用时的决策成本，提升后续转化率。</p>
<p>这个需求现在已经加入到 HTML打包EXE 工具中了。离线一机一码除了原来的“机器码 + 激活码”授权方式外，现在可以额外配置<strong>允许试用次数</strong>。用户在未激活时可以点击“试用”进入软件，试用次数用完后再要求正式激活。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="适合哪些场景">适合哪些场景？<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E9%80%82%E5%90%88%E5%93%AA%E4%BA%9B%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="适合哪些场景？的直接链接" title="适合哪些场景？的直接链接">​</a></h2>
<p>离线一机一码本身适合不能联网、内网部署、教学课件、资料包、本地工具等场景。新增试用功能后，尤其适合下面几类使用方式：</p>
<ol>
<li>付费课程或资料包：先让用户试看内容，再引导购买完整授权。</li>
<li>本地工具软件：用户可以先确认功能是否满足需求，再申请激活码。</li>
<li>离线交付项目：客户现场无法联网，但仍希望保留有限试用入口。</li>
<li>小规模软件分发：不想部署网络验证后台，又希望减少用户购买前的顾虑。</li>
</ol>
<p>简单来说，如果你原本就在使用离线一机一码，但觉得“打开就必须激活”的门槛有点高，现在就可以用试用功能把流程变得更柔和一些。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="配置方法">配置方法<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95" class="hash-link" aria-label="配置方法的直接链接" title="配置方法的直接链接">​</a></h2>
<p>在 HTML打包EXE 工具中打开<strong>离线一机一码</strong>相关配置，启用离线一机一码后，可以看到新增的试用次数配置项。</p>
<p><img decoding="async" loading="lazy" alt="离线一机一码试用配置页面" src="https://tutorial.leapever.com/assets/images/html2exe-offline-license-trial-config-6404fea09f6d7e6a0b0133548056460a.png" width="1898" height="632" class="img_SS3x"></p>
<p>配置时主要关注两项：</p>
<ol>
<li><strong>软件 ID</strong>：用于区分不同软件。生成激活码时需要使用同一个软件 ID。</li>
<li><strong>允许试用次数</strong>：设置未激活用户最多可以试用几次。设置为 0 表示不启用试用功能。</li>
</ol>
<p>例如你将允许试用次数设置为 <code>3</code>，用户在没有输入激活码的情况下，最多可以通过“试用”按钮进入软件 3 次。第 4 次打开时，试用次数用完，就只能输入激活码后继续使用。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="用户看到的效果">用户看到的效果<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E7%94%A8%E6%88%B7%E7%9C%8B%E5%88%B0%E7%9A%84%E6%95%88%E6%9E%9C" class="hash-link" aria-label="用户看到的效果的直接链接" title="用户看到的效果的直接链接">​</a></h2>
<p>打包生成 EXE 后，用户首次打开软件时仍然会看到激活窗口。不同的是，如果你配置了试用次数，窗口中会出现“试用”按钮，并显示剩余试用次数。</p>
<p><img decoding="async" loading="lazy" alt="离线一机一码试用弹窗效果" src="https://tutorial.leapever.com/assets/images/html2exe-offline-license-trial-dialog-898811085059013e94973f25c14cc60c.png" width="938" height="611" class="img_SS3x"></p>
<p>用户可以选择：</p>
<ol>
<li>输入激活码，直接完成正式激活。</li>
<li>点击复制机器码，把机器码发给软件作者生成激活码。</li>
<li>点击试用，暂时进入软件体验。</li>
<li>点击退出，关闭软件。</li>
</ol>
<p>试用次数会记录在本机，用户每点击一次试用，剩余次数就会减少一次。试用次数用完后，试用按钮不再可用，用户需要输入正确激活码才能继续使用。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="激活流程不变">激活流程不变<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E6%BF%80%E6%B4%BB%E6%B5%81%E7%A8%8B%E4%B8%8D%E5%8F%98" class="hash-link" aria-label="激活流程不变的直接链接" title="激活流程不变的直接链接">​</a></h2>
<p>新增试用功能不会改变原来的离线一机一码激活流程。正式激活仍然按原来的方式进行：</p>
<ol>
<li>用户复制机器码并发送给软件作者。</li>
<li>软件作者使用激活码计算器，根据机器码和软件 ID 生成激活码。</li>
<li>用户输入激活码完成激活。</li>
<li>激活成功后，下次打开软件不再弹出激活窗口。</li>
</ol>
<p>也就是说，试用功能只是给未激活用户增加了一个有限体验入口，不影响正式授权逻辑。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="和网络验证试用有什么区别">和网络验证试用有什么区别？<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E5%92%8C%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E8%AF%95%E7%94%A8%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="和网络验证试用有什么区别？的直接链接" title="和网络验证试用有什么区别？的直接链接">​</a></h2>
<p>离线一机一码试用和网络验证试用的最大区别是：<strong>它不需要服务器，也不需要联网</strong>。</p>
<table><thead><tr><th>对比项</th><th>离线一机一码试用</th><th>网络验证试用</th></tr></thead><tbody><tr><td>是否需要联网</td><td>不需要</td><td>需要</td></tr><tr><td>是否需要后台</td><td>不需要</td><td>需要网络验证后台</td></tr><tr><td>试用记录位置</td><td>用户本机</td><td>服务器后台</td></tr><tr><td>是否可远程管理</td><td>不支持</td><td>支持</td></tr><tr><td>适合场景</td><td>离线环境、小规模分发</td><td>大规模分发、需要后台管理</td></tr></tbody></table>
<p>如果你的用户环境无法联网，或者只是希望给离线授权增加一个简单试用入口，选择离线一机一码试用即可。如果你需要批量生成卡密、设置过期时间、远程禁用激活码，则更适合使用网络验证。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用建议">使用建议<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="使用建议的直接链接" title="使用建议的直接链接">​</a></h2>
<p>试用次数建议根据软件内容和用户决策周期来设置：</p>
<ol>
<li>内容型软件、资料包：可以设置 1-3 次，让用户确认内容质量。</li>
<li>工具型软件：可以设置 3-5 次，让用户完整体验核心功能。</li>
<li>内部交付软件：如果不希望开放试用，可以保持为 0。</li>
</ol>
<p>试用次数不建议设置得过大。它的作用是帮助用户完成购买前的确认，而不是替代正式授权。对于需要长期使用的软件，仍然建议引导用户通过机器码申请正式激活码。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="总结">总结<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E6%80%BB%E7%BB%93" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2>
<p>离线一机一码新增试用功能后，授权流程会更灵活：既可以继续保持完全离线、绑定机器的特点，又能让用户在正式激活前先体验软件。对于付费课件、本地工具、离线资料包等产品，这个功能可以明显降低用户第一次打开软件时的阻力。</p>
<p>如果你已经在使用离线一机一码，只需要下载最新版本，在配置页面设置允许试用次数后重新打包即可。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-offline-license-trial#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://tutorial.leapever.com/html2exe-encryption-comparison">HTML打包EXE三种加密方式对比</a></li>
<li><a href="https://tutorial.leapever.com/offline-vs-network-verification">离线一机一码验证和网络验证的区别</a></li>
<li><a href="https://tutorial.leapever.com/html2exe-encrypt-tutorial">离线一机一码使用详细教程</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="离线一机一码" term="离线一机一码"/>
        <category label="试用功能" term="试用功能"/>
        <category label="软件加密" term="软件加密"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[PDF加密转APK大师最新版本1.1.0更新, 附快速上手教程]]></title>
        <id>https://tutorial.leapever.com/pdf2apk-1.1.0</id>
        <link href="https://tutorial.leapever.com/pdf2apk-1.1.0"/>
        <updated>2026-06-14T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[PDF加密转APK大师最新版本1.1.0更新, 本次更新主要围绕APP ID输入、APK兼容性、打包速度和内核稳定性进行优化, 让PDF转APK和PDF加密保护流程更加稳定高效.]]></summary>
        <content type="html"><![CDATA[<p>PDF加密转APK大师最新版本1.1.0更新, 本次更新主要围绕APP ID输入、APK兼容性、打包速度和内核稳定性进行优化, 让PDF转APK和PDF加密保护流程更加稳定高效.</p>
<p>PDF文档在分发过程中经常会遇到被随意转发、复制、截图、二次传播等问题. 对于课程资料、电子书、内部培训文档、付费PDF资料等内容来说, 如果只是直接发送PDF文件, 很难限制文件的使用范围和传播路径.</p>
<p>PDF加密转APK大师是一款PDF加密和PDF转APK工具, 可以把PDF文件直接打包成安卓APP, 并支持一机一码加密、静态密码加密、防截屏、全屏、横屏、英文提示、APK混淆加固等功能. 用户无需配置安卓开发环境, 选择PDF文件并完成基础设置后, 即可生成可以安装到安卓手机上的APK文件.</p>
<p><img decoding="async" loading="lazy" alt="PDF加密转APK大师主界面" src="https://tutorial.leapever.com/assets/images/250006-20240514172401235-1756747354-7b43554e275a6aa29daa7dcd474596bf.png" width="1213" height="768" class="img_SS3x"></p>
<p>如果您想要查看详细的软件说明, 或者免费试用软件, 可以访问下面的链接:</p>
<p><a href="https://pdf2apk.leapever.com/" target="_blank" rel="noopener noreferrer">点击进入产品文档</a></p>
<p>本文主要介绍PDF加密转APK大师1.1.0版本的更新内容, 并附带一个快速简易上手教程, 方便新用户快速完成第一次PDF转APK打包.</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="本次110版本更新内容">本次1.1.0版本更新内容<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#%E6%9C%AC%E6%AC%A1110%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E5%86%85%E5%AE%B9" class="hash-link" aria-label="本次1.1.0版本更新内容的直接链接" title="本次1.1.0版本更新内容的直接链接">​</a></h2>
<ol>
<li>
<p>修复某些时候APP ID无法正常输入的问题</p>
<p>在一机一码加密、软件授权或应用标识配置场景下, APP ID是区分不同APP和授权信息的重要字段. 本次更新修复了部分情况下APP ID无法正常输入的问题, 让授权配置流程更加顺畅.</p>
</li>
<li>
<p>优化打包APK的兼容性, 使得老系统也可以正常载入PDF</p>
<p>一些较旧版本的安卓系统在PDF渲染、资源载入或WebView环境方面存在差异. 1.1.0版本针对这类兼容性问题进行了优化, 让生成后的APK在老系统上也可以更加稳定地载入PDF内容.</p>
</li>
<li>
<p>优化打包速度</p>
<p>本次更新优化了PDF转APK过程中的处理流程, 减少等待时间. 对于需要频繁打包测试、批量制作资料APP的用户来说, 可以更快完成生成和验证.</p>
</li>
<li>
<p>更新内核, 提升稳定性</p>
<p>1.1.0版本同步更新了软件内核, 提升整体运行稳定性, 让PDF载入、APK生成、配置保存和加密处理等流程更加可靠.</p>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="快速简易上手教程">快速简易上手教程<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#%E5%BF%AB%E9%80%9F%E7%AE%80%E6%98%93%E4%B8%8A%E6%89%8B%E6%95%99%E7%A8%8B" class="hash-link" aria-label="快速简易上手教程的直接链接" title="快速简易上手教程的直接链接">​</a></h2>
<p>下面以最常见的PDF转APK流程为例, 简单介绍如何把一个PDF文件打包成安卓APK.</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-打开软件并等待初始化完成">1. 打开软件并等待初始化完成<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#1-%E6%89%93%E5%BC%80%E8%BD%AF%E4%BB%B6%E5%B9%B6%E7%AD%89%E5%BE%85%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AE%8C%E6%88%90" class="hash-link" aria-label="1. 打开软件并等待初始化完成的直接链接" title="1. 打开软件并等待初始化完成的直接链接">​</a></h3>
<p>首先打开PDF加密转APK大师, 等待软件初始化和组件载入完成. 初始化完成后, 即可开始选择PDF文件并配置APP信息.</p>
<p><img decoding="async" loading="lazy" alt="打开软件" src="https://tutorial.leapever.com/assets/images/250006-20240514172401235-1756747354-7b43554e275a6aa29daa7dcd474596bf.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-选择需要打包的pdf文件">2. 选择需要打包的PDF文件<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#2-%E9%80%89%E6%8B%A9%E9%9C%80%E8%A6%81%E6%89%93%E5%8C%85%E7%9A%84pdf%E6%96%87%E4%BB%B6" class="hash-link" aria-label="2. 选择需要打包的PDF文件的直接链接" title="2. 选择需要打包的PDF文件的直接链接">​</a></h3>
<p>点击打开PDF文件按钮, 选择一个需要加密保护或转换成APK的PDF文件.</p>
<p>如果您只是想简单测试软件效果, 可以先准备一个普通PDF文档作为测试文件. 后续正式打包时, 再替换为需要发布的PDF资料.</p>
<p><img decoding="async" loading="lazy" alt="选择PDF文件" src="https://tutorial.leapever.com/assets/images/250006-20240514172907664-210464166-ccd342f8987059d032f3d5c07bcd8679.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-设置app基础信息">3. 设置APP基础信息<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#3-%E8%AE%BE%E7%BD%AEapp%E5%9F%BA%E7%A1%80%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="3. 设置APP基础信息的直接链接" title="3. 设置APP基础信息的直接链接">​</a></h3>
<p>选择PDF后, 可以根据需要设置APP名称、APP版本、标题栏、状态栏颜色等信息. 如果只是快速测试, 也可以先使用默认配置.</p>
<p>APP名称会显示在安卓手机桌面和安装信息中, 建议设置为课程名称、资料名称或品牌名称, 方便用户识别.</p>
<p><img decoding="async" loading="lazy" alt="设置APP基础信息" src="https://tutorial.leapever.com/assets/images/250006-20240514173108153-670219479-39559c2f2e8a776f405f1c5655b4c422.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-设置app包名和app-id">4. 设置APP包名和APP ID<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#4-%E8%AE%BE%E7%BD%AEapp%E5%8C%85%E5%90%8D%E5%92%8Capp-id" class="hash-link" aria-label="4. 设置APP包名和APP ID的直接链接" title="4. 设置APP包名和APP ID的直接链接">​</a></h3>
<p>接下来可以设置APP包名. 包名用于区分不同APK, 如果两次打包的APK包名相同, 安卓手机安装时通常会认为它们是同一个应用, 新版本会覆盖旧版本.</p>
<p>如果您需要使用一机一码加密或授权功能, 可以同时检查APP ID是否填写正确. 1.1.0版本已经修复了部分情况下APP ID无法正常输入的问题, 配置授权信息会更加稳定.</p>
<p><img decoding="async" loading="lazy" alt="设置APP包名和APP ID" src="https://tutorial.leapever.com/assets/images/250006-20240514173322263-1941774641-c5f23909fa087c2b35f22d70e371a3f8.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="5-根据需求选择保护配置">5. 根据需求选择保护配置<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#5-%E6%A0%B9%E6%8D%AE%E9%9C%80%E6%B1%82%E9%80%89%E6%8B%A9%E4%BF%9D%E6%8A%A4%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="5. 根据需求选择保护配置的直接链接" title="5. 根据需求选择保护配置的直接链接">​</a></h3>
<p>软件提供多种常用配置, 一般情况下使用默认选项即可. 如果有更明确的保护需求, 可以按需开启对应功能.</p>
<p>常见配置包括:</p>
<ul>
<li>退出提示: 用户退出APP时弹出确认窗口, 防止误触退出;</li>
<li>屏幕常亮: 阅读PDF时保持手机屏幕常亮;</li>
<li>全屏: 打开APP后全屏显示PDF内容;</li>
<li>横屏: APP打开后自动横屏显示;</li>
<li>英文支持: 将APP中的提示信息切换为英文;</li>
<li>APK伪加密: 对APK进行特殊处理, 提升资源提取难度;</li>
<li>提升兼容性: 提升老系统运行和PDF载入兼容性;</li>
<li>禁止截屏: 阻止用户在APP内截屏或录屏.</li>
</ul>
<p><img decoding="async" loading="lazy" alt="选择保护配置" src="https://tutorial.leapever.com/assets/images/250006-20240514173414747-392582724-f5e3527bb875c61f34992cca9e1dc4f2.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="6-可选-启用一机一码加密">6. 可选: 启用一机一码加密<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#6-%E5%8F%AF%E9%80%89-%E5%90%AF%E7%94%A8%E4%B8%80%E6%9C%BA%E4%B8%80%E7%A0%81%E5%8A%A0%E5%AF%86" class="hash-link" aria-label="6. 可选: 启用一机一码加密的直接链接" title="6. 可选: 启用一机一码加密的直接链接">​</a></h3>
<p>如果需要限制PDF只能在授权设备上查看, 可以在左侧选择一机一码加密, 然后启用该功能并配置软件ID或相关授权信息.</p>
<p>启用后, 用户安装APK并打开时, 通常需要根据机器码获取对应注册码. 这种方式适合付费课程、内部资料、客户专属文档等场景.</p>
<p><img decoding="async" loading="lazy" alt="一机一码加密设置" src="https://tutorial.leapever.com/assets/images/250006-20240514173653598-2069903038-cdd81c29c03001c99657ab8fada290e5.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="7-可选-启用静态密码加密">7. 可选: 启用静态密码加密<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#7-%E5%8F%AF%E9%80%89-%E5%90%AF%E7%94%A8%E9%9D%99%E6%80%81%E5%AF%86%E7%A0%81%E5%8A%A0%E5%AF%86" class="hash-link" aria-label="7. 可选: 启用静态密码加密的直接链接" title="7. 可选: 启用静态密码加密的直接链接">​</a></h3>
<p>如果只需要简单限制访问, 可以在左侧选择静态密码, 然后配置一个固定密码. 用户打开APP时输入正确密码后即可查看PDF内容.</p>
<p>需要注意的是, 静态密码加密和一机一码加密通常不建议同时使用. 实际制作时可以根据分发方式选择其中一种.</p>
<p><img decoding="async" loading="lazy" alt="静态密码设置" src="https://tutorial.leapever.com/assets/images/250006-20240514173752855-1132930836-51f2815108dae99016388b894d6431e3.png" width="1213" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="8-点击打包apk">8. 点击打包APK<a href="https://tutorial.leapever.com/pdf2apk-1.1.0#8-%E7%82%B9%E5%87%BB%E6%89%93%E5%8C%85apk" class="hash-link" aria-label="8. 点击打包APK的直接链接" title="8. 点击打包APK的直接链接">​</a></h3>
<p>全部配置完成后, 回到快速打包页面, 点击打包APK按钮. 软件会自动处理PDF资源、生成安卓APP并输出APK文件.</p>
<p>1.1.0版本优化了打包速度并更新了内核, 打包过程会更加稳定. 生成完成后, 建议先在自己的安卓手机或模拟器上安装测试, 确认PDF显示、加密方式和基础交互都符合预期.</p>
<p><img decoding="async" loading="lazy" alt="打包APK" src="https://tutorial.leapever.com/assets/images/250006-20240514173859606-1921277818-3a4204fd64ab0aa794e390c109acac3e.png" width="1213" height="768" class="img_SS3x"></p>
<p>以上便是PDF加密转APK大师1.1.0版本的主要更新内容和快速上手步骤. 如果想了解更多内容, 下载最新版本软件, 或者查看详细说明, 可以访问 <a href="https://pdf2apk.leapever.com/" target="_blank" rel="noopener noreferrer">PDF加密转APK大师官网</a>.</p>]]></content>
        <category label="PDF转APK" term="PDF转APK"/>
        <category label="PDF加密转APK大师" term="PDF加密转APK大师"/>
        <category label="免费下载" term="免费下载"/>
        <category label="软件更新" term="软件更新"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[极速图标设计大师 — 不会 PS 也能 3 秒做出专业 App 图标（附免费下载）]]></title>
        <id>https://tutorial.leapever.com/emoji-icon-designer-intro</id>
        <link href="https://tutorial.leapever.com/emoji-icon-designer-intro"/>
        <updated>2026-06-13T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[做软件、上架 App、给网站配 favicon，第一件让人头疼的事往往不是写代码，而是「图标怎么办」。不会 Photoshop、找不到合适素材、导出的尺寸又对不上规范……「极速图标设计大师」就是为了解决这些麻烦而生的一款零门槛桌面图标设计工具。海量 emoji 一键变图标，渐变背景、描边阴影、圆角随心调，几秒钟就能导出高清 PNG 与多尺寸 ICO。]]></summary>
        <content type="html"><![CDATA[<p>做软件、上架 App、给网站配 favicon，第一件让人头疼的事往往不是写代码，而是「图标怎么办」。不会 Photoshop、找不到合适素材、导出的尺寸又对不上规范……「极速图标设计大师」就是为了解决这些麻烦而生的一款零门槛桌面图标设计工具。海量 emoji 一键变图标，渐变背景、描边阴影、圆角随心调，几秒钟就能导出高清 PNG 与多尺寸 ICO。</p>
<p><img decoding="async" loading="lazy" alt="极速图标设计大师软件界面" src="https://tutorial.leapever.com/assets/images/emoji-icon-designer-screenshot-e8883d1b74c57213d962025a32a3eeac.png" width="1842" height="1526" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="它能帮你做什么">它能帮你做什么<a href="https://tutorial.leapever.com/emoji-icon-designer-intro#%E5%AE%83%E8%83%BD%E5%B8%AE%E4%BD%A0%E5%81%9A%E4%BB%80%E4%B9%88" class="hash-link" aria-label="它能帮你做什么的直接链接" title="它能帮你做什么的直接链接">​</a></h2>
<ul>
<li><strong>中英文搜索 emoji</strong>：输入「水果 / fruit / 笑脸 / smile」即可秒搜，内置 1000+ 表情符号素材，随选随用；</li>
<li><strong>渐变背景随心配</strong>：纯色或线性渐变自由切换，起始 / 结束颜色、渐变角度、背景阴影一应俱全；</li>
<li><strong>描边 · 阴影 · 旋转</strong>：文字颜色、描边粗细、阴影模糊、旋转角度、透明度精细可调；</li>
<li><strong>圆角与位置精调</strong>：0–256px 圆角自由设置，水平 / 垂直位置随意微调，还支持拖拽画布精准定位；</li>
<li><strong>PNG + 多尺寸 ICO</strong>：导出 64–1024px 高清 PNG，或一次性打包 16/24/32/48/64/128/256 多层级 ICO 文件；</li>
<li><strong>一键导出套图</strong>：一键生成全套尺寸图标，适配应用商店、桌面图标与各类平台规范；</li>
<li><strong>100% 本地离线</strong>：所有操作在本机完成，无需联网，安全省心。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="四步搞定专业图标">四步搞定专业图标<a href="https://tutorial.leapever.com/emoji-icon-designer-intro#%E5%9B%9B%E6%AD%A5%E6%90%9E%E5%AE%9A%E4%B8%93%E4%B8%9A%E5%9B%BE%E6%A0%87" class="hash-link" aria-label="四步搞定专业图标的直接链接" title="四步搞定专业图标的直接链接">​</a></h2>
<ol>
<li><strong>挑选图标</strong>：搜索或输入 emoji / 文字，作为图标主体；</li>
<li><strong>调配样式</strong>：选背景渐变、圆角、描边与阴影，实时预览；</li>
<li><strong>微调细节</strong>：拖拽定位、调整大小与角度，所见即所得；</li>
<li><strong>一键导出</strong>：导出 PNG 或多尺寸 ICO，立即投入使用。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="图标赏析">图标赏析<a href="https://tutorial.leapever.com/emoji-icon-designer-intro#%E5%9B%BE%E6%A0%87%E8%B5%8F%E6%9E%90" class="hash-link" aria-label="图标赏析的直接链接" title="图标赏析的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" alt="samples" src="https://tutorial.leapever.com/assets/images/samples-7a1c5e63dada781b5c122885bfe2c6f9.png" width="1954" height="802" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="适用场景">适用场景<a href="https://tutorial.leapever.com/emoji-icon-designer-intro#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="适用场景的直接链接" title="适用场景的直接链接">​</a></h2>
<ul>
<li>桌面软件、绿色工具的 ICO 应用图标；</li>
<li>网站 favicon、Web App 图标与书签图标；</li>
<li>App 上架封面、原型设计与占位图标；</li>
<li>个性化文件夹图标与桌面快捷方式美化；</li>
<li>社群头像、Logo 占位与活动小图标；</li>
<li>开发者快速制作占位图标与品牌素材。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="立即体验">立即体验<a href="https://tutorial.leapever.com/emoji-icon-designer-intro#%E7%AB%8B%E5%8D%B3%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="立即体验的直接链接" title="立即体验的直接链接">​</a></h2>
<p>软件提供免费下载，下载后即可体验完整功能，满意后再升级到无限制授权版本。</p>
<ul>
<li>官方网站：<a href="https://leapever.com/intro/emoji/" target="_blank" rel="noopener noreferrer">极速图标设计大师官网</a></li>
<li>免费下载地址：<a href="https://api.leapever.com/tools/downloademoji" target="_blank" rel="noopener noreferrer">点击下载试用</a></li>
<li>购买授权：<a href="https://leapever.com/purchase/emoji" target="_blank" rel="noopener noreferrer">立即购买</a></li>
</ul>
<p>无需设计基础，一个 emoji 加一组渐变，就能做出属于你自己的专业图标。现在就动手试试吧。</p>]]></content>
        <category label="H5开发技术" term="H5开发技术"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE导出配置文件教程：使用 .html2exe 文件备份、迁移和复用打包设置]]></title>
        <id>https://tutorial.leapever.com/html2exe-export-config-guide</id>
        <link href="https://tutorial.leapever.com/html2exe-export-config-guide"/>
        <updated>2026-06-09T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[HTML打包EXE工具支持将当前界面中的打包设置导出为独立的 .html2exe 配置文件。这个文件可以保存到本地、放进项目目录、发送给团队成员，也可以在另一台电脑上直接载入，快速恢复同一套打包参数。]]></summary>
        <content type="html"><![CDATA[<p>HTML打包EXE工具支持将当前界面中的打包设置导出为独立的 <code>.html2exe</code> 配置文件。这个文件可以保存到本地、放进项目目录、发送给团队成员，也可以在另一台电脑上直接载入，快速恢复同一套打包参数。</p>
<p>如果你经常维护多个HTML打包EXE项目，或者希望把正式版、测试版、客户定制版的打包设置分别保存下来，导出配置文件会比每次手动重新设置更稳妥。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="配置文件功能适合什么场景">配置文件功能适合什么场景？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%8A%9F%E8%83%BD%E9%80%82%E5%90%88%E4%BB%80%E4%B9%88%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="配置文件功能适合什么场景？的直接链接" title="配置文件功能适合什么场景？的直接链接">​</a></h2>
<p><code>.html2exe</code> 配置文件主要用于备份和迁移当前打包设置，常见场景包括：</p>
<ul>
<li><strong>更换电脑继续打包</strong>：在旧电脑导出配置，在新电脑载入后继续使用同一套参数。</li>
<li><strong>团队协作统一配置</strong>：一个人配置好项目路径、窗口大小、内核、高级选项后导出，其他成员直接载入。</li>
<li><strong>保存不同打包方案</strong>：同一个项目可以分别保存测试版、正式版、演示版等多套配置。</li>
<li><strong>项目归档</strong>：把 <code>.html2exe</code> 文件放到项目目录中，后续重新打包时不需要回忆当时的设置。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="功能入口">功能入口<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%8A%9F%E8%83%BD%E5%85%A5%E5%8F%A3" class="hash-link" aria-label="功能入口的直接链接" title="功能�入口的直接链接">​</a></h2>
<p>在打包工具顶部菜单中打开 <strong>文件</strong> 菜单，可以看到两个配置文件相关功能：</p>
<ul>
<li><strong>导出当前配置</strong>：把当前界面上的所有打包设置保存为 <code>.html2exe</code> 文件</li>
<li><strong>载入配置文件</strong>：选择一个 <code>.html2exe</code> 文件，并将其中的设置载入到当前界面</li>
</ul>
<p>导出的配置文件使用工具内置的加密方式保存，不是普通明文JSON文件，适合用于备份和传递打包参数。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="如何导出当前配置">如何导出当前配置<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%A6%82%E4%BD%95%E5%AF%BC%E5%87%BA%E5%BD%93%E5%89%8D%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="如何导出当前配置的直接链接" title="如何导出当前配置的直接链接">​</a></h2>
<ol>
<li>打开HTML打包EXE工具。</li>
<li>在界面中填写好项目路径、图标、输出格式、内核、窗口大小和高级配置等参数。</li>
<li>点击顶部菜单 <strong>文件 → 导出当前配置</strong>。</li>
<li>在保存对话框中选择保存位置，文件扩展名保持为 <code>.html2exe</code>。</li>
<li>保存成功后，会看到导出成功提示。</li>
</ol>
<p><img decoding="async" loading="lazy" alt="载入/导出配置菜单" src="https://tutorial.leapever.com/assets/images/html2exe-export-and-import-84e075cb8412878905e300ce72a9af7f.png" width="1898" height="636" class="img_SS3x"></p>
<p>建议把配置文件保存在项目目录中，例如：</p>
<div class="language-text codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-text codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">MyHtmlProject/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── index.html</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── assets/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── pack-config.html2exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── README.md</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这样以后重新打包这个项目时，只需要先载入 <code>pack-config.html2exe</code>，再检查项目路径是否仍然有效即可。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="如何载入配置文件">如何载入配置文件<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%A6%82%E4%BD%95%E8%BD%BD%E5%85%A5%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6" class="hash-link" aria-label="如何载入配置文件的直接链接" title="如何载入配置文件的直接链接">​</a></h2>
<ol>
<li>打开HTML打包EXE工具。</li>
<li>点击顶部菜单 <strong>文件 → 载入配置文件</strong>。</li>
<li>选择之前导出的 <code>.html2exe</code> 文件。</li>
<li>载入成功后，当前界面上的配置会被配置文件中的内容覆盖。</li>
<li>检查项目路径、图标路径、附件文件路径等本机路径是否仍然存在，然后点击打包。</li>
</ol>
<blockquote>
<p><strong>提示：</strong> 载入配置文件会覆盖当前界面上的设置。如果当前界面还有未保存的重要修改，建议先导出一份当前配置作为备份。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="会保存哪些配置">会保存哪些配置？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E4%BC%9A%E4%BF%9D%E5%AD%98%E5%93%AA%E4%BA%9B%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="会保存哪些配置？的直接链接" title="会保存哪些配置？的直接链接">​</a></h2>
<p>导出的 <code>.html2exe</code> 文件会保存当前界面中的主要打包参数，包括：</p>
<table><thead><tr><th>分类</th><th>保存内容</th></tr></thead><tbody><tr><td>基本设置</td><td>HTML项目路径、图标路径、输出格式、内核选择、窗口宽高、软件ID</td></tr><tr><td>高级配置</td><td>全屏、可调整窗口、禁用缓存、退出提示、窗口模式、置顶、托盘等选项</td></tr><tr><td>授权配置</td><td>离线注册码、网络验证、静态密码等相关配置</td></tr><tr><td>版权信息</td><td>EXE标题、弹窗提示、版本号、公司名、文件名、文件描述</td></tr><tr><td>安装包设置</td><td>默认安装目录、桌面快捷方式名、安装包压缩和分包选项</td></tr><tr><td>扩展功能</td><td>自定义菜单、附件文件、数据加密、启动图、本地服务器、自定义UA和Header等</td></tr></tbody></table>
<p>如果配置中包含本地文件路径，例如图标路径、附件文件路径、HTML主文件路径，载入到另一台电脑后需要确保这些路径仍然存在。如果路径不同，可以载入后手动重新选择。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="和保存设置管理配置有什么区别">和“保存设置”“管理配置”有什么区别？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%92%8C%E4%BF%9D%E5%AD%98%E8%AE%BE%E7%BD%AE%E7%AE%A1%E7%90%86%E9%85%8D%E7%BD%AE%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="和“保存设置”“管理配置”有什么区别？的直接链接" title="和“保存设置”“管理配置”有什么区别？的直接链接">​</a></h2>
<p>HTML打包EXE工具里有几种配置相关功能，适用场景不同：</p>
<table><thead><tr><th>功能</th><th>适合场景</th><th>保存位置</th></tr></thead><tbody><tr><td>保存设置</td><td>下次打开软件自动恢复当前配置</td><td>当前电脑的AppData目录</td></tr><tr><td>管理配置</td><td>在当前电脑管理多个项目的配置</td><td>当前电脑的AppData目录</td></tr><tr><td>导出当前配置</td><td>备份、迁移、团队共享、项目归档</td><td>用户选择的 <code>.html2exe</code> 文件</td></tr><tr><td>载入配置文件</td><td>从 <code>.html2exe</code> 文件恢复打包参数</td><td>直接覆盖当前界面配置</td></tr></tbody></table>
<p>简单来说，<strong>保存设置和管理配置更适合在同一台电脑上日常使用</strong>；<strong>导出配置文件更适合跨电脑、跨成员、跨项目归档使用</strong>。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="实战示例把项目打包配置交给同事">实战示例：把项目打包配置交给同事<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%AE%9E%E6%88%98%E7%A4%BA%E4%BE%8B%E6%8A%8A%E9%A1%B9%E7%9B%AE%E6%89%93%E5%8C%85%E9%85%8D%E7%BD%AE%E4%BA%A4%E7%BB%99%E5%90%8C%E4%BA%8B" class="hash-link" aria-label="实战示例：把项目打包配置交给同事的直接链接" title="实战示例：把项目打包配置交给同事的直接链接">​</a></h2>
<p>假设你已经完成了一个客户项目的HTML打包配置，希望同事也能用同样参数打包：</p>
<ol>
<li>在你的电脑上配置好所有打包参数。</li>
<li>点击 <strong>文件 → 导出当前配置</strong>，保存为 <code>customer-a.html2exe</code>。</li>
<li>把HTML项目文件夹和 <code>customer-a.html2exe</code> 一起发给同事。</li>
<li>同事打开HTML打包EXE工具，点击 <strong>文件 → 载入配置文件</strong>。</li>
<li>载入 <code>customer-a.html2exe</code> 后，重新选择本机上的HTML主文件路径和图标路径。</li>
<li>检查无误后点击打包。</li>
</ol>
<p>这样可以避免口头描述配置项，也能减少漏勾高级选项的问题。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用建议">使用建议<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="使用建议的直接链接" title="使用建议的直接链接">​</a></h2>
<ol>
<li><strong>按项目保存配置文件</strong>：建议每个项目保留一个 <code>.html2exe</code> 配置文件，文件名可以包含项目名或版本号。</li>
<li><strong>迁移后检查路径</strong>：配置中的本地路径可能因电脑不同而失效，载入后请检查HTML、图标、附件文件等路径。</li>
<li><strong>正式版配置单独保存</strong>：上线前使用的正式版配置建议单独导出，方便后续复现同一套打包参数。</li>
<li><strong>不要手动修改配置文件内容</strong>：<code>.html2exe</code> 文件经过加密处理，手动编辑可能导致无法载入。</li>
<li><strong>载入前先备份当前设置</strong>：如果当前界面配置还需要保留，可以先导出当前配置，再载入其他配置文件。</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="常见问题">常见问题<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98" class="hash-link" aria-label="常见问题的直接链接" title="常见问题的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="html2exe-文件可以双击打开吗">.html2exe 文件可以双击打开吗？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#html2exe-%E6%96%87%E4%BB%B6%E5%8F%AF%E4%BB%A5%E5%8F%8C%E5%87%BB%E6%89%93%E5%BC%80%E5%90%97" class="hash-link" aria-label=".html2exe 文件可以双击打开吗？的直接链接" title=".html2exe 文件可以双击打开吗？的直接链接">​</a></h3>
<p>不可以。<code>.html2exe</code> 是HTML打包EXE工具的配置文件，需要在软件中通过 <strong>文件 → 载入配置文件</strong> 打开。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="导出的配置文件是明文吗">导出的配置文件是明文吗？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E5%AF%BC%E5%87%BA%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%98%AF%E6%98%8E%E6%96%87%E5%90%97" class="hash-link" aria-label="导出的配置文件是明文吗？的直接链接" title="导出的配置文件是明文吗？的直接链接">​</a></h3>
<p>不是。配置文件会使用工具内置的加密方式保存，不能直接用文本编辑器查看或修改。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="载入配置文件会自动开始打包吗">载入配置文件会自动开始打包吗？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E8%BD%BD%E5%85%A5%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%BC%9A%E8%87%AA%E5%8A%A8%E5%BC%80%E5%A7%8B%E6%89%93%E5%8C%85%E5%90%97" class="hash-link" aria-label="载入配置文件会自动开始打包吗？的直接链接" title="载入配置文件会自动开始打包吗？的直接链接">​</a></h3>
<p>不会。载入配置文件只会把配置恢复到界面中，你仍然需要检查路径和参数，然后手动点击 <strong>打包</strong>。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="载入后是否还需要点击保存设置">载入后是否还需要点击保存设置？<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E8%BD%BD%E5%85%A5%E5%90%8E%E6%98%AF%E5%90%A6%E8%BF%98%E9%9C%80%E8%A6%81%E7%82%B9%E5%87%BB%E4%BF%9D%E5%AD%98%E8%AE%BE%E7%BD%AE" class="hash-link" aria-label="载入后是否还需要点击保存设置？的直接链接" title="载入后是否还需要点击保存设置？的直接链接">​</a></h3>
<p>如果你希望下次打开软件时自动使用这套配置，可以在载入后点击主界面的 <strong>保存设置</strong>。如果只是临时打包一次，则不需要额外保存。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-export-config-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html-exe-config-management" target="_blank" rel="noopener noreferrer">HTML打包EXE配置管理教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-extra-files-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具附件文件功能教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-custom-menu-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具自定义菜单功能详解</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-installer-config-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具安装包配置教程</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="配置文件" term="配置文件"/>
        <category label="导出配置" term="导出配置"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[BZ全景漫游可视化编辑器: 零代码制作360全景漫游H5作品]]></title>
        <id>https://tutorial.leapever.com/bz-panorama-editor-intro</id>
        <link href="https://tutorial.leapever.com/bz-panorama-editor-intro"/>
        <updated>2026-06-03T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[BZ全景漫游可视化编辑器是一款面向非程序员的 360 全景漫游制作工具。无需编写一行 XML 或 JavaScript 代码, 通过可视化拖拽即可把多张 360 全景图组合成可交互的漫游 H5 作品。]]></summary>
        <content type="html"><![CDATA[<p>BZ全景漫游可视化编辑器是一款面向<strong>非程序员</strong>的 360 全景漫游制作工具。无需编写一行 XML 或 JavaScript 代码, 通过可视化拖拽即可把多张 360 全景图组合成可交互的漫游 H5 作品。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载与官网">下载与官网<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%98%E7%BD%91" class="hash-link" aria-label="下载与官网的直接链接" title="下载与官网的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/kvev2/download" target="_blank" rel="noopener noreferrer">BZ全景漫游编辑器下载</a></li>
<li><a href="https://leapever.com/intro/bz" target="_blank" rel="noopener noreferrer">BZ全景漫游可视化编辑器官网</a></li>
<li><a href="https://leapever.com/intro/bz/docs/quick-tutorial" target="_blank" rel="noopener noreferrer">快速开始指南 (10 分钟教程)</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="软件简介">软件简介<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#%E8%BD%AF%E4%BB%B6%E7%AE%80%E4%BB%8B" class="hash-link" aria-label="软件简介的直接链接" title="软件简介的直接链接">​</a></h2>
<p>很多人想做一个能在朋友圈, 微信公众号, 官网上分享的 360 全景漫游, 但传统方案 (krpano, Pano2VR 等) 要么需要写 XML 脚本, 要么界面晦涩, 上手成本极高。</p>
<p>BZ全景漫游可视化编辑器把整个制作流程做成了<strong>拖拽 + 点击</strong>的可视化操作: 导入全景图 → 拖热点 → 设置初始视角 → 一键导出。导出的是标准的离线 H5 项目, 可以本地直接打开浏览, 也可上传任意Web服务器通过网址访问, 并支持打包成 Windows / 安卓 / iOS 原生应用。</p>
<p><img decoding="async" loading="lazy" alt="软件主界面" src="https://tutorial.leapever.com/assets/images/bz-pano-main-interface-733a3061e2454ea148b2304e9f084190.png" width="1366" height="765" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="核心功能">核心功能<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD" class="hash-link" aria-label="核心功能的直接链接" title="核心功能的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-多场景全景漫游">1. 多场景全景漫游<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#1-%E5%A4%9A%E5%9C%BA%E6%99%AF%E5%85%A8%E6%99%AF%E6%BC%AB%E6%B8%B8" class="hash-link" aria-label="1. 多场景全景漫游的直接链接" title="1. 多场景全景漫游的直接链接">​</a></h3>
<p>支持导入多张 360 全景图, 通过 <strong>切换热点</strong> 串联成完整漫游路径: 客厅 → 卧室 → 阳台 → 厨房, 一镜到底游走整个空间。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-8-种交互热点">2. 8 种交互热点<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#2-8-%E7%A7%8D%E4%BA%A4%E4%BA%92%E7%83%AD%E7%82%B9" class="hash-link" aria-label="2. 8 种交互热点的直接链接" title="2. 8 种交互热点的直接链接">​</a></h3>
<p>热点 (Hotspot) 是悬浮在全景里的可点击图标, 软件内置8种类型, 包含切换, 视频, 相册等, 覆盖绝大多数交互场景</p>
<p><img decoding="async" loading="lazy" alt="热点编辑" src="https://tutorial.leapever.com/assets/images/bz-pano-hotspots-33e420749a0bd36975badc80504af312.png" width="1366" height="765" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-视角与可视范围限制">3. 视角与可视范围限制<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#3-%E8%A7%86%E8%A7%92%E4%B8%8E%E5%8F%AF%E8%A7%86%E8%8C%83%E5%9B%B4%E9%99%90%E5%88%B6" class="hash-link" aria-label="3. 视角与可视范围限制的直接链接" title="3. 视角与可视范围限制的直接链接">​</a></h3>
<p>可视化拖拽设置 <strong>初始视角</strong>, 限制水平 / 垂直可视范围 (Yaw / Pitch / FOV), 防止观众看到天空, 地面缝合处的瑕疵。</p>
<p><img decoding="async" loading="lazy" alt="视角设置" src="https://tutorial.leapever.com/assets/images/bz-pano-viewpoint-fa6237f97a3e809b1e9fb7ed86d49fbf.png" width="1366" height="765" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-背景音乐与语音解说">4. 背景音乐与语音解说<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#4-%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E4%B8%8E%E8%AF%AD%E9%9F%B3%E8%A7%A3%E8%AF%B4" class="hash-link" aria-label="4. 背景音乐与语音解说的直接链接" title="4. 背景音乐与语音解说的直接链接">​</a></h3>
<p>每个场景可独立配音, 也可一键 <strong>应用到本组或全部场景</strong>。"背景音乐" 跟随场景自动播放, "语音解说" 可在进入场景时主动旁白。</p>
<p><img decoding="async" loading="lazy" alt="音乐与解说" src="https://tutorial.leapever.com/assets/images/bz-pano-music-25490bb3c1ece87702a2b4134c4f5331.png" width="1366" height="765" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="5-天气与光照特效">5. 天气与光照特效<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#5-%E5%A4%A9%E6%B0%94%E4%B8%8E%E5%85%89%E7%85%A7%E7%89%B9%E6%95%88" class="hash-link" aria-label="5. 天气与光照特效的直接链接" title="5. 天气与光照特效的直接链接">​</a></h3>
<p>内置 <strong>太阳光, 下雨, 下雪</strong> 三种动态特效, 也支持上传自定义贴图特效, 给楼盘看房, 旅游景区漫游增加氛围感。</p>
<p><img decoding="async" loading="lazy" alt="特效设置" src="https://tutorial.leapever.com/assets/images/bz-pano-effects-6274e8f6963578c9f79fbc23bb437915.png" width="1366" height="765" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="6-沙盘平面地图">6. 沙盘平面地图<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#6-%E6%B2%99%E7%9B%98%E5%B9%B3%E9%9D%A2%E5%9C%B0%E5%9B%BE" class="hash-link" aria-label="6. 沙盘平面地图的直接链接" title="6. 沙盘平面地图的直接链接">​</a></h3>
<p>在全景中嵌入沙盘地图, 一目了然展示场景的空间分布, 观众点击地图上的点即可跳转到对应场景, 非常适合 <strong>大平层户型, 园区导览, 博物馆展馆</strong>。</p>
<p><img decoding="async" loading="lazy" alt="沙盘地图" src="https://tutorial.leapever.com/assets/images/bz-pano-sand-table-be3de24adf2ab04b629f906109e5f463.png" width="1366" height="734" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="7-素材库统一管理">7. 素材库统一管理<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#7-%E7%B4%A0%E6%9D%90%E5%BA%93%E7%BB%9F%E4%B8%80%E7%AE%A1%E7%90%86" class="hash-link" aria-label="7. 素材库统一管理的直接链接" title="7. 素材库统一管理的直接链接">​</a></h3>
<p>全景图, 图片, 音频, 视频统一存放在 <strong>素材库</strong>, 跨作品复用 — 同一张全景图切片一次, 后续做其他作品时不再重复导入和切片, 大幅节省磁盘和工期。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="8-一键导出离线-h5-项目">8. 一键导出离线 H5 项目<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#8-%E4%B8%80%E9%94%AE%E5%AF%BC%E5%87%BA%E7%A6%BB%E7%BA%BF-h5-%E9%A1%B9%E7%9B%AE" class="hash-link" aria-label="8. 一键导出离线 H5 项目的直接链接" title="8. 一键导出离线 H5 项目的直接链接">​</a></h3>
<p>一键导出标准 HTML5 离线项目, 所有素材都在一个文件夹里, <strong>不依赖任何外部资源</strong>, 上传到 Nginx / IIS / GitHub Pages / 阿里云 OSS / 腾讯云 COS 都能正常运行。</p>
<p><img decoding="async" loading="lazy" alt="导出 H5" src="https://tutorial.leapever.com/assets/images/bz-pano-export-e5749478ffe50af52c8e03b3a654d536.png" width="1366" height="456" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="9-支持打包为原生应用">9. 支持打包为原生应用<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#9-%E6%94%AF%E6%8C%81%E6%89%93%E5%8C%85%E4%B8%BA%E5%8E%9F%E7%94%9F%E5%BA%94%E7%94%A8" class="hash-link" aria-label="9. 支持打包为原生应用的直接链接" title="9. 支持打包为原生应用的直接链接">​</a></h3>
<p>导出的 H5 项目可以再借助官方教程进一步打包成:</p>
<ul>
<li><strong>EXE电脑程序</strong> — 用 <a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具</a> 封装, 适合 U 盘交付客户, 不依赖网络的展会演示</li>
<li><strong>APK安卓应用</strong> — 用 <a href="https://leapever.com/intro/apk-packer/" target="_blank" rel="noopener noreferrer">HTML一键打包APK工具</a> 封装, 适合移动端展示, 应用市场分发</li>
<li><strong>IPA苹果应用</strong> — 用 <a href="https://leapever.com/intro/ios-packer/" target="_blank" rel="noopener noreferrer">GDB苹果网页一键打包工具</a> 封装, 适合企业内部分发, App Store 上架</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="适用场景">适用场景<a href="https://tutorial.leapever.com/bz-panorama-editor-intro#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="适用场景的直接链接" title="适用场景的直接链接">​</a></h2>
<ul>
<li><strong>房地产虚拟看房 (VR 看房)</strong> — 远程带客户看房, 720° 还原户型</li>
<li><strong>酒店, 民宿, 餐厅在线展示</strong> — 让用户下单前看清环境</li>
<li><strong>旅游景区在线漫游</strong> — 景区官网, 公众号文章里的"线上游"入口</li>
<li><strong>校园, 园区, 工厂导览</strong> — 招生宣传, 客户参观, 招商招租</li>
<li><strong>博物馆, 美术馆, 展览馆数字展示</strong> — 文物展品配音频讲解, 热点深度内容</li>
<li><strong>婚礼, 活动现场 360 留念</strong> — 给来宾发链接, 把现场永久保存</li>
<li><strong>全景产品展厅</strong> — 汽车 4S 店内饰展示, 工业设备 360 环物</li>
</ul>]]></content>
        <category label="BZ全景漫游" term="BZ全景漫游"/>
        <category label="全景漫游" term="全景漫游"/>
        <category label="720全景" term="720全景"/>
        <category label="VR看房" term="VR看房"/>
        <category label="可视化编辑器" term="可视化编辑器"/>
        <category label="H5漫游" term="H5漫游"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[苹果手机快速开启开发者模式教程(iOS 16+)]]></title>
        <id>https://tutorial.leapever.com/ios-developer-mode-enable-guide</id>
        <link href="https://tutorial.leapever.com/ios-developer-mode-enable-guide"/>
        <updated>2026-05-20T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[从 iOS 16 开始加的苹果添加了安全限制:任何用开发者证书打包出来的 App,设备上必须先把 开发者模式(Developer Mode) 打开才能运行。模拟器、App Store 下载的正式 App 不受影响。]]></summary>
        <content type="html"><![CDATA[<p>从 iOS 16 开始加的苹果添加了安全限制:任何用开发者证书打包出来的 App,设备上必须先把 <strong>开发者模式(Developer Mode)</strong> 打开才能运行。模拟器、App Store 下载的正式 App 不受影响。</p>
<p>下面 5 步即可永久开启,只需要做一次,后面装其他自签 App 就不会再弹这个提示了。</p>
<blockquote>
<p><strong>注意</strong>: 开发者模式开启后设备安全性会略微下降(允许运行未经苹果审核的 App),不需要时可以在同一个开关里关掉。iOS 15 及以下系统没有这个开关。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤一打开-app-看到需要启用开发者模式提示">步骤一:打开 App 看到"需要启用开发者模式"提示<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E6%AD%A5%E9%AA%A4%E4%B8%80%E6%89%93%E5%BC%80-app-%E7%9C%8B%E5%88%B0%E9%9C%80%E8%A6%81%E5%90%AF%E7%94%A8%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F%E6%8F%90%E7%A4%BA" class="hash-link" aria-label="步骤一:打开 App 看到&quot;需要启用开发者模式&quot;提示的直接链接" title="步骤一:打开 App 看到&quot;需要启用开发者模式&quot;提示的直接链接">​</a></h2>
<p>装好自签的 IPA 后,点击桌面图标启动 App,会弹出下面这个对话框,提示**"xxx"需要在开发者模式下运行**。直接点"好"关掉,然后去系统设置里开开发者模式。</p>
<p><img decoding="async" loading="lazy" alt="需要启用开发者模式提示" src="https://tutorial.leapever.com/assets/images/ios-developer-mode-step1-1625515eb83db16a58bbd316f1c85811.png" width="401" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤二进入设置--隐私与安全性">步骤二:进入"设置 → 隐私与安全性"<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E6%AD%A5%E9%AA%A4%E4%BA%8C%E8%BF%9B%E5%85%A5%E8%AE%BE%E7%BD%AE--%E9%9A%90%E7%A7%81%E4%B8%8E%E5%AE%89%E5%85%A8%E6%80%A7" class="hash-link" aria-label="步骤二:进入&quot;设置 → 隐私与安全性&quot;的直接链接" title="步骤二:进入&quot;设置 → 隐私与安全性&quot;的直接链接">​</a></h2>
<p>回到桌面,打开 <strong>设置</strong>,下滑找到 <strong>隐私与安全性</strong>,点进去。</p>
<p><img decoding="async" loading="lazy" alt="设置 - 隐私与安全性" src="https://tutorial.leapever.com/assets/images/ios-developer-mode-step2-c0e7293eb6e75f3e258c69d629230938.png" width="401" height="768" class="img_SS3x"></p>
<blockquote>
<p>如果在"隐私与安全性"里**找不到"开发者模式"**这一项,说明系统还没识别到设备上装过开发者签名的 App。请先用 <a href="https://leapever.com/intro/ipa-installer" target="_blank" rel="noopener noreferrer">苹果签名安装助手</a> 或 Xcode 把自签 IPA 装到手机,装完之后这个入口才会出现。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤三在隐私与安全性里点击开发者模式">步骤三:在"隐私与安全性"里点击"开发者模式"<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E6%AD%A5%E9%AA%A4%E4%B8%89%E5%9C%A8%E9%9A%90%E7%A7%81%E4%B8%8E%E5%AE%89%E5%85%A8%E6%80%A7%E9%87%8C%E7%82%B9%E5%87%BB%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="步骤三:在&quot;隐私与安全性&quot;里点击&quot;开发者模式&quot;的直接链接" title="步骤三:在&quot;隐私与安全性&quot;里点击&quot;开发者模式&quot;的直接链接">​</a></h2>
<p>划到页面最底部"安全性"分组,会看到 <strong>开发者模式</strong> 入口,点击进入。</p>
<p><img decoding="async" loading="lazy" alt="隐私与安全性 - 开发者模式入口" src="https://tutorial.leapever.com/assets/images/ios-developer-mode-step3-81e961b641d20f962025c034b27c1d7d.png" width="401" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤四打开开关并按提示重新启动">步骤四:打开开关并按提示"重新启动"<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E6%AD%A5%E9%AA%A4%E5%9B%9B%E6%89%93%E5%BC%80%E5%BC%80%E5%85%B3%E5%B9%B6%E6%8C%89%E6%8F%90%E7%A4%BA%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8" class="hash-link" aria-label="步骤四:打开开关并按提示&quot;重新启动&quot;的直接链接" title="步骤四:打开开关并按提示&quot;重新启动&quot;的直接链接">​</a></h2>
<p>把 <strong>开发者模式</strong> 右边的开关打开(变绿),系统会底部弹出提示:"'开发者模式'打开后,设备安全性将降低,重新启动设备以打开'开发者模式'"。点击 <strong>重新启动</strong>,设备会自动重启。</p>
<p><img decoding="async" loading="lazy" alt="打开开发者模式开关并重启" src="https://tutorial.leapever.com/assets/images/ios-developer-mode-step4-c772e0f6c1e2eb793b9c221a023d1969.png" width="401" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤五重启后确认打开开发者模式">步骤五:重启后确认"打开开发者模式"<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E6%AD%A5%E9%AA%A4%E4%BA%94%E9%87%8D%E5%90%AF%E5%90%8E%E7%A1%AE%E8%AE%A4%E6%89%93%E5%BC%80%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F" class="hash-link" aria-label="步骤五:重启后确认&quot;打开开发者模式&quot;的直接链接" title="步骤五:重启后确认&quot;打开开发者模式&quot;的直接链接">​</a></h2>
<p>设备重启完成、解锁回到桌面后(可能要先输入一次 iPhone 密码),系统会再弹一个二次确认:<strong>"打开'开发者模式'?"</strong>,提示开发者模式允许使用 App 开发所需功能。点击红框里的 <strong>打开</strong>。</p>
<p><img decoding="async" loading="lazy" alt="重启后二次确认打开开发者模式" src="https://tutorial.leapever.com/assets/images/ios-developer-mode-step5-58fd8afde0029ef0e60ede5b1f3a7a46.png" width="401" height="768" class="img_SS3x"></p>
<p>至此开发者模式已经永久开启,再次打开自签 App 不会再弹"需要启用开发者模式"。这是一次性设置,后续装其他自签 IPA 都可以直接运行。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="常见问题">常见问题<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98" class="hash-link" aria-label="常见问题的直接链接" title="常见问题的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-找不到开发者模式选项">1. 找不到"开发者模式"选项?<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#1-%E6%89%BE%E4%B8%8D%E5%88%B0%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F%E9%80%89%E9%A1%B9" class="hash-link" aria-label="1. 找不到&quot;开发者模式&quot;选项?的直接链接" title="1. 找不到&quot;开发者模式&quot;选项?的直接链接">​</a></h3>
<ul>
<li>iOS 版本 &lt; 16:没有这个开关,不需要开,直接去"通用 → VPN 与设备管理"信任开发者证书即可。</li>
<li>iOS ≥ 16 但没看到:设备上没有任何开发者签名的 App。先用 <a href="https://leapever.com/intro/ipa-installer" target="_blank" rel="noopener noreferrer">苹果签名安装助手</a> 把自签 IPA 装上,再来 设置 → 隐私与安全性 里就能看到。</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-重启后没有弹打开开发者模式对话框">2. 重启后没有弹"打开'开发者模式'?"对话框<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#2-%E9%87%8D%E5%90%AF%E5%90%8E%E6%B2%A1%E6%9C%89%E5%BC%B9%E6%89%93%E5%BC%80%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F%E5%AF%B9%E8%AF%9D%E6%A1%86" class="hash-link" aria-label="2. 重启后没有弹&quot;打开'开发者模式'?&quot;对话框的直接链接" title="2. 重启后没有弹&quot;打开'开发者模式'?&quot;对话框的直接链接">​</a></h3>
<ul>
<li>解锁屏幕后等 1~2 秒,如果还没弹,回到 设置 → 隐私与安全性 → 开发者模式,确认开关已打开;没打开就再打一次,会重新触发重启确认流程。</li>
<li>部分机型重启后系统会先要求输入一次 iPhone 密码,<strong>没输密码不会弹</strong>这个对话框。</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-开发者模式开关是灰色的点不动">3. 开发者模式开关是灰色的、点不动<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#3-%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F%E5%BC%80%E5%85%B3%E6%98%AF%E7%81%B0%E8%89%B2%E7%9A%84%E7%82%B9%E4%B8%8D%E5%8A%A8" class="hash-link" aria-label="3. 开发者模式开关是灰色的、点不动的直接链接" title="3. 开发者模式开关是灰色的、点不动的直接链接">​</a></h3>
<ul>
<li>设备被 MDM(企业管理)托管时,开关会被锁定。需要先在 设置 → 通用 → VPN 与设备管理 里移除 MDM 描述文件。</li>
<li>屏幕使用时间限制了"隐私"相关设置:设置 → 屏幕使用时间 → 内容和隐私访问限制 关闭,或者把"隐私"项设为"允许更改"。</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-开了开发者模式手机会不安全吗">4. 开了开发者模式手机会不安全吗?<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#4-%E5%BC%80%E4%BA%86%E5%BC%80%E5%8F%91%E8%80%85%E6%A8%A1%E5%BC%8F%E6%89%8B%E6%9C%BA%E4%BC%9A%E4%B8%8D%E5%AE%89%E5%85%A8%E5%90%97" class="hash-link" aria-label="4. 开了开发者模式手机会不安全吗?的直接链接" title="4. 开了开发者�模式手机会不安全吗?的直接链接">​</a></h3>
<ul>
<li>苹果的提示是"安全性将降低"——具体含义是允许运行<strong>未经 App Store 审核</strong>的 App。只要你只装自己签名或者信任来源的 IPA,实际风险可控。</li>
<li>调试/测试期开,平时不调试可以随时关掉,关掉之后所有开发者签名的 App 都会再次被拦下来。</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关工具">相关工具<a href="https://tutorial.leapever.com/ios-developer-mode-enable-guide#%E7%9B%B8%E5%85%B3%E5%B7%A5%E5%85%B7" class="hash-link" aria-label="相关工具的直接链接" title="相关工具的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/intro/ipa-installer" target="_blank" rel="noopener noreferrer">苹果签名安装助手</a>:Windows<!-- --> 端用 Apple ID 一键生成免费 7 天证书并签 IPA,无需 Mac、无需 Xcode。</li>
<li><a href="https://leapever.com/intro/ios-packer" target="_blank" rel="noopener noreferrer">HTML 一键打包 iOS App</a>:把网页/Web 项目打包成 iOS App 用于本地测试时,也需要先按本文开启开发者模式才能正常启动。</li>
</ul>]]></content>
        <category label="iOS开发者模式" term="iOS开发者模式"/>
        <category label="苹果APP测试" term="苹果APP测试"/>
        <category label="苹果签名安装助手" term="苹果签名安装助手"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[苹果签名安装助手 - 用 Apple ID 一键生成免费 7 天证书教程]]></title>
        <id>https://tutorial.leapever.com/ipa-installer-free-cert-guide</id>
        <link href="https://tutorial.leapever.com/ipa-installer-free-cert-guide"/>
        <updated>2026-05-19T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[苹果签名安装助手 现已支持在 Windows 上直接用自己的 Apple ID 一键生成免费 7 天签名证书，不再需要 Mac + Xcode 折腾 CSR、p12 导出和描述文件下载，全流程自动生成。方便开发者快速本地测试，也方便个人玩机用户给自己手机自签 IPA，无需越狱、无需 Mac。]]></summary>
        <content type="html"><![CDATA[<p><strong>苹果签名安装助手</strong> 现已支持在 Windows 上直接用自己的 Apple ID <strong>一键生成免费 7 天签名证书</strong>，不再需要 Mac + Xcode 折腾 CSR、p12 导出和描述文件下载，全流程自动生成。方便开发者快速本地测试，也方便个人玩机用户给自己手机自签 IPA，无需越狱、无需 Mac。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/intro/ipa-installer" target="_blank" rel="noopener noreferrer">苹果签名安装助手官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="前置条件">前置条件<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="前置条件的直接链接" title="前置条件的直接链接">​</a></h2>
<ul>
<li>一个 Apple ID（免费个人账号即可，建议<strong>用小号</strong>避免主账号被苹果锁定）</li>
<li>iPhone / iPad 的 UDID（可以搜索 蒲公英UDID 扫码获取）</li>
</ul>
<blockquote>
<p>免费账号苹果的硬性限制：<strong>最多 10 个 App ID（7 天滚动）、最多 3 台设备</strong>。证书有效期 <strong>7 天</strong>，到期再用同一账号在工具里跑一遍即可续期。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤一进入证书生成向导">步骤一：进入证书生成向导<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E6%AD%A5%E9%AA%A4%E4%B8%80%E8%BF%9B%E5%85%A5%E8%AF%81%E4%B9%A6%E7%94%9F%E6%88%90%E5%90%91%E5%AF%BC" class="hash-link" aria-label="步骤一：进入证书生成向导的直接链接" title="步骤一：进入证书生成向导的直接链接">​</a></h2>
<p>打开软件 → 切到 <strong>【管理证书】</strong> 标签 → 点击右上角 <strong>【用 Apple ID 生成免费证书】</strong> 按钮。</p>
<p><img decoding="async" loading="lazy" alt="生成免费证书入口" src="https://tutorial.leapever.com/assets/images/ipa-installer-cert-gen-wizard-button-cc9f3889d80158bec4c59435be71c4c6.png" width="2176" height="644" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤二登录-apple-id">步骤二：登录 Apple ID<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E6%AD%A5%EF%BF%BD%EF%BF%BD%E9%AA%A4%E4%BA%8C%E7%99%BB%E5%BD%95-apple-id" class="hash-link" aria-label="步骤二：登录 Apple ID的直接链接" title="步骤二：登录 Apple ID的直接链接">​</a></h2>
<p>在向导里输入 Apple ID 和密码，勾选"记住此账号"可选，点击 <strong>下一步</strong>。</p>
<p><img decoding="async" loading="lazy" alt="Apple ID 登录" src="https://tutorial.leapever.com/assets/images/ipa-installer-cert-gen-wizard-login-bb998976630175a4a95329b53870f409.png" width="1066" height="768" class="img_SS3x"></p>
<p>如果账号开启了双重认证（绝大多数账号都开了），会进入 2FA 步骤：默认推送验证码到信任设备，也可以点 <strong>【发送短信验证码】</strong> 改走短信，填入 6 位验证码后点 <strong>下一步</strong>。</p>
<p><img decoding="async" loading="lazy" alt="双重认证" src="https://tutorial.leapever.com/assets/images/ipa-installer-cert-gen-wizard-2fa-18286825eae738d10e3f86ecc83ab9aa.png" width="1066" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤三填写应用信息和设备-udid">步骤三：填写应用信息和设备 UDID<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E6%AD%A5%E9%AA%A4%E4%B8%89%E5%A1%AB%E5%86%99%E5%BA%94%E7%94%A8%E4%BF%A1%E6%81%AF%E5%92%8C%E8%AE%BE%E5%A4%87-udid" class="hash-link" aria-label="步骤三：填写应用信息和设备 UDID的直接链接" title="步骤三：填写应用信息和设备 UDID的直接链接">​</a></h2>
<table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>Bundle ID</td><td>任意合法反向域名，如 <code>com.yourname.myapp</code></td></tr><tr><td>应用名</td><td>显示在 iPhone 桌面上的名字</td></tr><tr><td>设备 UDID</td><td>iPhone 的 25 位或 40 位 UDID，<strong>必填</strong></td></tr><tr><td>设备名</td><td>任意，仅显示在 Apple Developer 后台</td></tr><tr><td>P12 密码</td><td>可选，留空表示导出的 p12 不加密</td></tr></tbody></table>
<p><img decoding="async" loading="lazy" alt="填写应用与设备信息" src="https://tutorial.leapever.com/assets/images/ipa-installer-cert-gen-wizard-app-info-f63dfce448c01e4909a58058378bbaf0.png" width="1066" height="768" class="img_SS3x"></p>
<p>点击 <strong>下一步</strong>，软件即可自动生成免费苹果开发者证书</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="步骤四用生成的证书签名-ipa">步骤四：用生成的证书签名 IPA<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E6%AD%A5%E9%AA%A4%E5%9B%9B%E7%94%A8%E7%94%9F%E6%88%90%E7%9A%84%E8%AF%81%E4%B9%A6%E7%AD%BE%E5%90%8D-ipa" class="hash-link" aria-label="步骤四：用生成的证书签名 IPA的直接链接" title="步骤四：用生成的证书签名 IPA的直接链接">​</a></h2>
<p>完成后证书会直接出现在 <strong>【管理证书】</strong> 列表里。切到 <strong>【快速签名】</strong> 标签，选择 IPA 文件 + 刚刚生成的证书，点 <strong>【开始签名】</strong> 即可。</p>
<p><img decoding="async" loading="lazy" alt="快速签名页面" src="https://tutorial.leapever.com/assets/images/ipa-installer-sign-form-f7b5151daa26fc3772eeb5590490729e.png" width="1366" height="608" class="img_SS3x"></p>
<p>签名完成后点 <strong>【立即生成二维码安装】</strong>，软件会本地起一个 HTTPS 服务并生成二维码，iPhone 用相机扫一扫就能直装。</p>
<p><img decoding="async" loading="lazy" alt="扫码安装" src="https://tutorial.leapever.com/assets/images/ipa-installer-qr-install-scan-f9ba1b5b17a785ef883851566a34433b.png" width="1066" height="768" class="img_SS3x"></p>
<blockquote>
<p>第一次安装某个证书签的 App，iPhone 上点开会提示"未受信任的开发者"。去 <strong>设置 → 通用 → VPN 与设备管理</strong> 里点 <strong>信任</strong> 即可。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="证书到期了怎么办">证书到期了怎么办<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E8%AF%81%E4%B9%A6%E5%88%B0%E6%9C%9F%E4%BA%86%E6%80%8E%E4%B9%88%E5%8A%9E" class="hash-link" aria-label="证书到期了怎么办的直接链接" title="证书到期了怎么办的直接链接">​</a></h2>
<p>免费证书 7 天后会过期。续期方法很简单：在工具里用同一个 Apple ID + 同一台设备 UDID 再走一遍上面的流程，<strong>Bundle ID 复用即可</strong>，工具会自动生成一份新的 p12 和描述文件。用新证书重签一下原来的 IPA 重新装一次，又是 7 天。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/ipa-installer-free-cert-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/intro/ipa-installer/docs/quick-tutorial" target="_blank" rel="noopener noreferrer">苹果签名安装助手快速上手教程</a></li>
<li><a href="https://leapever.com/intro/ipa-installer/docs/cert-generate" target="_blank" rel="noopener noreferrer">免费证书生成详细说明</a></li>
<li><a href="https://leapever.com/intro/ipa-installer/docs/sign-feature" target="_blank" rel="noopener noreferrer">快速签名功能详解</a></li>
<li><a href="https://leapever.com/intro/ipa-installer/docs/price" target="_blank" rel="noopener noreferrer">价格 &amp; 权益对比</a></li>
</ul>]]></content>
        <category label="苹果签名安装助手" term="苹果签名安装助手"/>
        <category label="IPA签名" term="IPA签名"/>
        <category label="免费证书" term="免费证书"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE使用附件功能调用外部程序扩展你的EXE - 附实战演练实现录频功能]]></title>
        <id>https://tutorial.leapever.com/html2exe-extra-files-guide</id>
        <link href="https://tutorial.leapever.com/html2exe-extra-files-guide"/>
        <updated>2026-04-29T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[HTML打包EXE工具支持附件文件功能，可以将额外的文件或文件夹与HTML项目一起打包进EXE。打包后的附件会和EXE放在同一目录下，运行时可以直接访问。配合 HTMLPackHelper.open() API，可以实现从HTML页面中启动外部程序的功能。]]></summary>
        <content type="html"><![CDATA[<p>HTML打包EXE工具支持<strong>附件文件</strong>功能，可以将额外的文件或文件夹与HTML项目一起打包进EXE。打包后的附件会和EXE放在同一目录下，运行时可以直接访问。配合 <code>HTMLPackHelper.open()</code> API，可以实现从HTML页面中启动外部程序的功能。</p>
<p>本文通过一个实际案例——<strong>将开源截图录屏工具 ScreenToGif 打包进EXE，点击按钮即可启动</strong>，来完整演示附件文件功能的使用方法。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="功能入口">功能入口<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E5%8A%9F%E8%83%BD%E5%85%A5%E5%8F%A3" class="hash-link" aria-label="功能入口的直接链接" title="功能入口的直接链接">​</a></h2>
<p>在打包工具<strong>快速打包</strong>标签页中，可以找到<strong>附件文件</strong>配置项：</p>
<p><img decoding="async" loading="lazy" alt="附件文件配置入口" src="https://tutorial.leapever.com/assets/images/html2exe-extra-files-entry-20ed7670db8b4ed79174d6b506225c1e.png" width="1176" height="768" class="img_SS3x"></p>
<p>点击<strong>配置附件</strong>按钮，会弹出附件管理对话框。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="附件管理对话框">附件管理对话框<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E9%99%84%E4%BB%B6%E7%AE%A1%E7%90%86%E5%AF%B9%E8%AF%9D%E6%A1%86" class="hash-link" aria-label="附件管理对话框的直接链接" title="附件管理对话框的直接链接">​</a></h2>
<p>在对话框中可以进行以下操作：</p>
<ul>
<li><strong>添加文件</strong>：选择一个或多个文件作为附件</li>
<li><strong>添加文件夹</strong>：选择整个文件夹作为附件（文件夹内所有内容都会被打包）</li>
<li><strong>移除</strong>：删除不需要的附件项</li>
<li><strong>清空</strong>：一键清除所有附件</li>
</ul>
<p><img decoding="async" loading="lazy" alt="附件管理对话框" src="https://tutorial.leapever.com/assets/images/html2exe-extra-files-dialog-0cd623cba68ea7efe2b82684a2744961.png" width="1176" height="768" class="img_SS3x"></p>
<p>对话框中会显示每个附件的类型标记：</p>
<ul>
<li>🔵 <strong>文件</strong>：单个文件</li>
<li>🟠 <strong>文件夹</strong>：整个目录</li>
<li>🔴 <strong>不存在</strong>：文件路径无效（打包时会跳过）</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="附件文件的存放位置">附件文件的存放位置<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E9%99%84%E4%BB%B6%E6%96%87%E4%BB%B6%E7%9A%84%E5%AD%98%E6%94%BE%E4%BD%8D%E7%BD%AE" class="hash-link" aria-label="附件文件的存放位置的直接链接" title="附件文件的存放位置的直接链接">​</a></h2>
<p>打包后，附件文件会被放到与EXE同级的目录下。例如：</p>
<div class="codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-text codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">MyApp/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── MyApp.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── ScreenToGif.exe      ← 附件文件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── tools/               ← 附件文件夹</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── tool1.exe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── tool2.bat</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── ...（其他打包生成的文件）</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>如果选择的是<strong>安装版EXE</strong>，附件文件会被包含在安装包中，安装后同样位于应用安装目录下。
如果选择的是<strong>绿色版EXE</strong>, 附件文件会被嵌入到EXE里面, 可以使用相对于EXE的路径去获取.</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="实战演示集成-screentogif-截图录屏工具">实战演示：集成 ScreenToGif 截图录屏工具<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E5%AE%9E%E6%88%98%E6%BC%94%E7%A4%BA%E9%9B%86%E6%88%90-screentogif-%E6%88%AA%E5%9B%BE%E5%BD%95%E5%B1%8F%E5%B7%A5%E5%85%B7" class="hash-link" aria-label="实战演示：集成 ScreenToGif 截图录屏工具的直接链接" title="实战演示：集成 ScreenToGif 截图录屏工具的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="关于-screentogif">关于 ScreenToGif<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E5%85%B3%E4%BA%8E-screentogif" class="hash-link" aria-label="关于 ScreenToGif的直接链接" title="关于 ScreenToGif的直接链接">​</a></h3>
<p>ScreenToGif是一款开源免费的屏幕录制工具（MIT 协议），支持：</p>
<ul>
<li>屏幕录制并导出为 GIF/视频</li>
<li>区域截图</li>
<li>内置编辑器，可添加文字、边框等</li>
</ul>
<p>它是一个<strong>单文件便携版EXE</strong>（约几MB），非常适合作为附件打包。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="第一步准备html文件">第一步：准备HTML文件<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%87%86%E5%A4%87html%E6%96%87%E4%BB%B6" class="hash-link" aria-label="第一步：准备HTML文件的直接链接" title="第一步：准备HTML文件的直接链接">​</a></h3>
<p>创建一个 <code>index.html</code> 文件，包含一个启动 ScreenToGif 的按钮：</p>
<div class="language-html codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-html codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">DOCTYPE</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">html</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">zh-CN</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">meta</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">charset</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">UTF-8</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">title</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">我的工具箱</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">title</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">style</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector" style="color:#00009f">*</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">box-sizing</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> border-box</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector" style="color:#00009f">body</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-family</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css string" style="color:#e3116c">'Microsoft YaHei'</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"> </span><span class="token style language-css string" style="color:#e3116c">'Segoe UI'</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"> sans-serif</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#f0f2f5</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">min-height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">100</span><span class="token style language-css unit">vh</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">40</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">20</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.header</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">text-align</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-bottom</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">30</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.header</span><span class="token style language-css selector" style="color:#00009f"> h1</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">22</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#333</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-weight</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">600</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.header</span><span class="token style language-css selector" style="color:#00009f"> p</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#999</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">13</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.tool-list</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">max-width</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">480</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> auto</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.tool-item</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#fff</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">px</span><span class="token style language-css"> solid </span><span class="token style language-css hexcode color">#e8e8e8</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-radius</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">8</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">16</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">20</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-bottom</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">12</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">align-items</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">justify-content</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> space-between</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.tool-info</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">align-items</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">gap</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">12</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.tool-icon</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">width</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">40</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">40</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#e6f7ff</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-radius</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">8</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">align-items</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">justify-content</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">20</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-shrink</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.tool-name</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">15</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-weight</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">500</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#333</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.tool-desc</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">12</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#999</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">2</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.btn-open</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#1890ff</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#fff</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> none</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-radius</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">4</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">16</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">13</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">cursor</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> pointer</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">white-space</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> nowrap</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-shrink</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.btn-open</span><span class="token style language-css selector pseudo-class" style="color:#00009f">:hover</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#40a9ff</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">style</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">header</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">我的工具箱</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">点击"打开"按钮即可启动对应工具</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">tool-list</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">tool-item</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">tool-info</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">tool-icon</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">🎬</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">tool-name</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">ScreenToGif</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">tool-desc</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">屏幕录制工具，支持录屏、截图、GIF导出</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">btn-open</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">openTool</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript string" style="color:#e3116c">'ScreenToGif.exe'</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">打开</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript keyword" style="color:#00009f">function</span><span class="token script language-javascript"> </span><span class="token script language-javascript function" style="color:#d73a49">openTool</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript parameter">fileName</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">if</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript dom variable" style="color:#36acaa">window</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access maybe-class-name">HTMLPackHelper</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript dom variable" style="color:#36acaa">window</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access maybe-class-name">HTMLPackHelper</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">open</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">fileName</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">else</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript function" style="color:#d73a49">alert</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'请在打包后的EXE中运行，当前环境不支持此功能'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>核心代码只有一行：</p>
<div class="language-js codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-js codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ScreenToGif.exe'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="第二步打包配置">第二步：打包配置<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E7%AC%AC%E4%BA%8C%E6%AD%A5%E6%89%93%E5%8C%85%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="第二步：打包配置的直接链接" title="第二步：打包配置的直接链接">​</a></h3>
<ol>
<li>打开HTML打包EXE工具</li>
<li><strong>本地html主文件</strong>：选择上面创建的 <code>index.html</code></li>
<li><strong>附件文件</strong>：点击<strong>配置附件</strong> → <strong>添加文件</strong> → 选择下载好的 <code>ScreenToGif.exe</code></li>
<li>在<strong>高级配置</strong>中勾选<strong>启用API</strong>（必须开启，否则 <code>HTMLPackHelper</code> 不可用）</li>
</ol>
<p><img decoding="async" loading="lazy" alt="打包配置示例" src="https://tutorial.leapever.com/assets/images/html2exe-extra-files-pack-setting-e4e1b518bfdd47a5d74de89777ffee76.png" width="1176" height="768" class="img_SS3x"></p>
<ol start="5">
<li>点击<strong>打包</strong>，选择保存位置</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="第三步运行效果">第三步：运行效果<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E7%AC%AC%E4%B8%89%E6%AD%A5%E8%BF%90%E8%A1%8C%E6%95%88%E6%9E%9C" class="hash-link" aria-label="第三步：运行效果的直接链接" title="第三步：运行效果的直接链接">​</a></h3>
<p>打包完成后，运行生成的EXE：</p>
<ol>
<li>程序启动后显示工具箱界面</li>
</ol>
<p><img decoding="async" loading="lazy" alt="打开ScreenToGif" src="https://tutorial.leapever.com/assets/images/html2exe-extra-files-pack-view-2bfabbbdd3317aaf278428a4cc807db4.png" width="1044" height="590" class="img_SS3x"></p>
<ol start="2">
<li>点击<strong>启动 ScreenToGif</strong> 按钮</li>
<li>ScreenToGif 程序被成功启动</li>
</ol>
<p><img decoding="async" loading="lazy" alt="打包ScreenToGif后" src="https://tutorial.leapever.com/assets/images/html2exe-extra-files-pack-open-a95b8e52758e12059748175c2633c44b.png" width="1362" height="733" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="open-api-说明">open API 说明<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#open-api-%E8%AF%B4%E6%98%8E" class="hash-link" aria-label="open API 说明的直接链接" title="open API 说明的直接链接">​</a></h2>
<p><code>HTMLPackHelper.open(itemPath)</code> 用于打开一个文件或启动一个程序。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="路径规则">路径规则<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E8%B7%AF%E5%BE%84%E8%A7%84%E5%88%99" class="hash-link" aria-label="路径规则的直接链接" title="路径规则的直接链接">​</a></h3>
<table><thead><tr><th>路径类型</th><th>示例</th><th>说明</th></tr></thead><tbody><tr><td><strong>相对路径</strong></td><td><code>"ScreenToGif.exe"</code></td><td>相对于EXE所在目录</td></tr><tr><td><strong>相对路径（子目录）</strong></td><td><code>"tools/mytool.exe"</code></td><td>EXE所在目录下的子目录</td></tr><tr><td><strong>绝对路径</strong></td><td><code>"C:\\Windows\\notepad.exe"</code></td><td>直接使用绝对路径</td></tr></tbody></table>
<p>大多数情况下使用<strong>相对路径</strong>即可，因为附件文件打包后就在EXE同级目录下。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="前置条件">前置条件<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="前置条件的直接链接" title="前置条件的直接链接">​</a></h3>
<p>使用 <code>HTMLPackHelper.open()</code> 需要在打包时勾选<strong>启用API</strong>选项（位于高级配置标签页）。如果未开启API，<code>window.HTMLPackHelper</code> 将为 <code>undefined</code>。</p>
<p>建议在调用前做一下判断：</p>
<div class="language-js codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-js codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ScreenToGif.exe'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">alert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'当前环境不支持此功能'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="不�仅可以打开exe">不仅可以打开EXE<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E4%B8%8D%E4%BB%85%E5%8F%AF%E4%BB%A5%E6%89%93%E5%BC%80exe" class="hash-link" aria-label="不仅可以打开EXE的直接链接" title="不仅可以打开EXE的直接链接">​</a></h3>
<p><code>open</code> API 本质上调用的是系统的默认打开方式，因此不限于EXE文件：</p>
<div class="language-js codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-js codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 打开一个附件PDF文档</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'使用手册.pdf'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 打开一个附件文件夹</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'data'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 打开一个附件图片</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'help.png'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="注意事项">注意事项<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" class="hash-link" aria-label="注意事项的直接链接" title="注意事项的直接链接">​</a></h2>
<ol>
<li><strong>启用API</strong>：使用 <code>HTMLPackHelper.open()</code> 前必须在高级配置中勾选启用API</li>
<li><strong>文件体积</strong>：附件文件会增加打包后的EXE体积，建议使用便携版/单文件版工具</li>
<li><strong>路径中的空格</strong>：如果文件名包含空格，直接传入即可，不需要额外处理</li>
<li><strong>安装版EXE</strong>：附件文件同样会被包含在安装包中，安装后位于安装目录下</li>
<li><strong>杀毒软件</strong>：部分杀毒软件可能对打包的EXE中包含其他EXE文件产生误报，建议发布前测试</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-extra-files-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html2exe-installer-config-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具安装包配置教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-splash-screen-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具启动图设置教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-custom-menu-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具自定义菜单功能详解</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-new-api-version-and-request-headers" target="_blank" rel="noopener noreferrer">HTML打包EXE新增API说明：版本号获取</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="附件文件" term="附件文件"/>
        <category label="open API" term="open API"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE安装包配置教程 - 自定义安装目录和桌面快捷方式名]]></title>
        <id>https://tutorial.leapever.com/html2exe-installer-config-guide</id>
        <link href="https://tutorial.leapever.com/html2exe-installer-config-guide"/>
        <updated>2026-04-28T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[HTML打包EXE工具在选择安装版EXE格式时，支持自定义安装目录和桌面快捷方式名称。本文简单介绍这两个配置项的作用和默认行为。]]></summary>
        <content type="html"><![CDATA[<p>HTML打包EXE工具在选择<strong>安装版EXE</strong>格式时，支持自定义安装目录和桌面快捷方式名称。本文简单介绍这两个配置项的作用和默认行为。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-installer-config-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="配置位置">配置位置<a href="https://tutorial.leapever.com/html2exe-installer-config-guide#%E9%85%8D%E7%BD%AE%E4%BD%8D%E7%BD%AE" class="hash-link" aria-label="配置位置的直接链接" title="配置位置的直接链接">​</a></h2>
<p>在打包工具中切换到<strong>高级配置</strong>标签页，底部有一个<strong>安装包配置</strong>面板，包含两个配置项：</p>
<p><img decoding="async" loading="lazy" alt="安装包配置面板" src="https://tutorial.leapever.com/assets/images/html2exe-installer-config-panel-0916943634b1984b01568076df32b08d.png" width="1176" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="默认安装目录">默认安装目录<a href="https://tutorial.leapever.com/html2exe-installer-config-guide#%E9%BB%98%E8%AE%A4%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95" class="hash-link" aria-label="默认安装目录的直接链接" title="默认安装目录的直接链接">​</a></h2>
<p>这个配置项决定了用户安装时的默认安装路径，完整路径为：</p>
<div class="codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-text codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token plain">C:\Program Files (x86)\{你填写的内容}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>不填时</strong>：自动使用打包时保存的EXE文件名作为安装目录名。例如你保存的安装包文件名为 <code>MyApp-setup.exe</code>，那么默认安装路径就是 <code>C:\Program Files (x86)\MyApp-setup</code>。</p>
<p><strong>填写后</strong>：使用你填写的名称。例如填写 <code>我的应用</code>，安装路径就是 <code>C:\Program Files (x86)\我的应用</code>。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="桌面快捷方式名">桌面快捷方式名<a href="https://tutorial.leapever.com/html2exe-installer-config-guide#%E6%A1%8C%E9%9D%A2%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E5%90%8D" class="hash-link" aria-label="桌面快捷方式名的直接链接" title="桌面快捷方式名的直接链接">​</a></h2>
<p>这个配置项决定了安装完成后桌面上快捷方式显示的名称。</p>
<p><strong>不填时</strong>：同样使用打包时保存的EXE文件名。例如保存的文件名为 <code>MyApp-setup.exe</code>，桌面快捷方式就显示为 <code>MyApp-setup</code>。</p>
<p><strong>填写后</strong>：使用你填写的名称。例如填写 <code>我的应用</code>，桌面快捷方式就显示为 <code>我的应用</code>。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用建议">使用建议<a href="https://tutorial.leapever.com/html2exe-installer-config-guide#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="使用建议的直接链接" title="使用建议的直接链接">​</a></h2>
<p>大多数情况下建议填写这两个配置项，给用户一个清晰的应用名称，而不是使用默认的文件名。特别是当保存的文件名包含版本号或 <code>-setup</code> 等后缀时，填写一个简洁的应用名会更美观。</p>
<blockquote>
<p><strong>注意</strong>：安装包配置仅在格式设置选择<strong>安装版EXE</strong>时生效，选择绿色版EXE时无需关注此配置。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-installer-config-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html2exe-splash-screen-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具启动图设置教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-encrypt-tutorial" target="_blank" rel="noopener noreferrer">HTML打包EXE工具加密功能教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-custom-menu-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具自定义菜单功能详解</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-transparent-window-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具透明窗口教程</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="安装包配置" term="安装包配置"/>
        <category label="安装版EXE" term="安装版EXE"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包/EXE加密的一机一码网络验证常见问题汇总]]></title>
        <id>https://tutorial.leapever.com/html2exe-network-validation-faq</id>
        <link href="https://tutorial.leapever.com/html2exe-network-validation-faq"/>
        <updated>2026-04-28T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文汇总了 HTML打包EXE工具 和 EXE一机一码加密大师 在使用网络验证功能时的常见问题与解答，帮助你快速定位和解决遇到的问题。]]></summary>
        <content type="html"><![CDATA[<p>本文汇总了 HTML打包EXE工具 和 EXE一机一码加密大师 在使用网络验证功能时的常见问题与解答，帮助你快速定位和解决遇到的问题。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">HTML打包EXE工具下载</a></li>
<li><a href="https://api.leapever.com/exeenc/download" target="_blank" rel="noopener noreferrer">EXE一机一码加密大师下载</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="一机一码机制">一机一码机制<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E4%B8%80%E6%9C%BA%E4%B8%80%E7%A0%81%E6%9C%BA%E5%88%B6" class="hash-link" aria-label="一机一码机制的直接链接" title="一机一码机制的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q网络验证的一机一码是什么意思">Q：网络验证的「一机一码」是什么意思？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E7%9A%84%E4%B8%80%E6%9C%BA%E4%B8%80%E7%A0%81%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D" class="hash-link" aria-label="Q：网络验证的「一机一码」是什么意思？的直接链接" title="Q：网络验证的「一机一码」是什么意思？的直接链接">​</a></h3>
<p>一机一码是指每个激活码激活时会<strong>绑定用户的机器码</strong>，绑定后该激活码只能在这一台机器上使用。即使激活码被泄露给其他人，也无法在其他电脑上使用，有效防止激活码被多人共享。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q用户换了电脑之前的激活码还能用吗">Q：用户换了电脑，之前的激活码还能用吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%94%A8%E6%88%B7%E6%8D%A2%E4%BA%86%E7%94%B5%E8%84%91%E4%B9%8B%E5%89%8D%E7%9A%84%E6%BF%80%E6%B4%BB%E7%A0%81%E8%BF%98%E8%83%BD%E7%94%A8%E5%90%97" class="hash-link" aria-label="Q：用户换了电脑，之前的激活码还能用吗？的直接链接" title="Q：用户换了电脑，之前的激活码还能用吗？的直接链接">​</a></h3>
<p><strong>不能。</strong> 激活码绑定的是原来那台电脑的机器码，更换电脑后机器码会改变，原激活码无法使用。你需要为用户生成一个新的激活码。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q用户重装系统后激活码还有效吗">Q：用户重装系统后，激活码还有效吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%94%A8%E6%88%B7%E9%87%8D%E8%A3%85%E7%B3%BB%E7%BB%9F%E5%90%8E%E6%BF%80%E6%B4%BB%E7%A0%81%E8%BF%98%E6%9C%89%E6%95%88%E5%90%97" class="hash-link" aria-label="Q：用户重装系统后，激活码还有效吗？的直接链接" title="Q：用户重装系统后，激活码还有效吗？的直接链接">​</a></h3>
<p>一般情况下，重装系统不会影响机器码，激活码仍然有效。但如果用户更换了主要硬件（如主板、硬盘等），机器码可能会改变，此时需要重新提供新的激活码。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q一个激活码可以在多台电脑上使用吗">Q：一个激活码可以在多台电脑上使用吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E4%B8%80%E4%B8%AA%E6%BF%80%E6%B4%BB%E7%A0%81%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%A4%9A%E5%8F%B0%E7%94%B5%E8%84%91%E4%B8%8A%E4%BD%BF%E7%94%A8%E5%90%97" class="hash-link" aria-label="Q：一个激活码可以在多台电脑上使用吗？的直接链接" title="Q：一个激活码可以在多台电脑上使用吗？的直接链接">​</a></h3>
<p><strong>不可以。</strong> 这是一机一码机制的核心——一个激活码只能绑定一台机器。如果需要在多台机器上使用，需要为每台机器分别生成激活码。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="激活码管理">激活码管理<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E6%BF%80%E6%B4%BB%E7%A0%81%E7%AE%A1%E7%90%86" class="hash-link" aria-label="激活码管理的直接链接" title="激活码管理的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q如何批量生成激活码">Q：如何批量生成激活码？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%A6%82%E4%BD%95%E6%89%B9%E9%87%8F%E7%94%9F%E6%88%90%E6%BF%80%E6%B4%BB%E7%A0%81" class="hash-link" aria-label="Q：如何批量生成激活码？的直接链接" title="Q：如何批量生成激活码？的直接链接">​</a></h3>
<p>在管理后台的<strong>生成激活码</strong>页面，设置好过期时间、允许打开次数、App ID 等参数后，将<strong>生成数目</strong>设为你需要的数量（最多一次 100 个），点击生成即可批量创建。</p>
<p><img decoding="async" loading="lazy" alt="生成激活码" src="https://tutorial.leapever.com/assets/images/html2exe-network-validation-admin-gencodes-ea6e1afeb467c6c5ffacfd3eed6be153.png" width="575" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q激活码可以设置有效期吗">Q：激活码可以设置有效期吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E6%BF%80%E6%B4%BB%E7%A0%81%E5%8F%AF%E4%BB%A5%E8%AE%BE%E7%BD%AE%E6%9C%89%E6%95%88%E6%9C%9F%E5%90%97" class="hash-link" aria-label="Q：激活码可以设置有效期吗？的直接链接" title="Q：激活码可以设置有效期吗？的直接链接">​</a></h3>
<p><strong>可以。</strong> 生成激活码时可以选择有效时长，支持 1小时 到 3年，也可以选择永久有效或自定义分钟数。有效期从用户激活时开始计算，而不是从生成时开始。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q激活码过期了怎么办">Q：激活码过期了怎么办？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E6%BF%80%E6%B4%BB%E7%A0%81%E8%BF%87%E6%9C%9F%E4%BA%86%E6%80%8E%E4%B9%88%E5%8A%9E" class="hash-link" aria-label="Q：激活码过期了怎么办？的直接链接" title="Q：激活码过期了怎么办？的直接链接">​</a></h3>
<p>过期的激活码无法续期，需要为用户生成新的激活码。用户使用新激活码重新激活即可。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q如何禁用某个用户的激活码">Q：如何禁用某个用户的激活码？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E6%9F%90%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%E6%BF%80%E6%B4%BB%E7%A0%81" class="hash-link" aria-label="Q：如何禁用某个用户的激活码？的直接链接" title="Q：如何禁用某个用户的激活码？的直接链接">​</a></h3>
<p>在管理后台的<strong>激活码管理</strong>页面，找到对应的激活码，点击<strong>禁用</strong>按钮即可。禁用后用户打开软件时验证会失败。如需恢复，点击<strong>启用</strong>即可。</p>
<p><img decoding="async" loading="lazy" alt="激活码管理" src="https://tutorial.leapever.com/assets/images/html2exe-network-validation-admin-view-codes-f203fb72a9a5d591d6fd08a8a808bb8b.png" width="575" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q删除和禁用激活码有什么区别">Q：删除和禁用激活码有什么区别？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%88%A0%E9%99%A4%E5%92%8C%E7%A6%81%E7%94%A8%E6%BF%80%E6%B4%BB%E7%A0%81%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB" class="hash-link" aria-label="Q：删除和禁用激活码有什么区别？的直接链接" title="Q：删除和禁用激活码有什么区别？的直接链接">​</a></h3>
<ul>
<li><strong>禁用</strong>：临时操作，可以随时恢复启用</li>
<li><strong>删除</strong>：永久操作，删除后无法恢复</li>
</ul>
<p>如果只是想暂时阻止某个用户使用，建议使用禁用功能。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="配置与打包">配置与打包<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E9%85%8D%E7%BD%AE%E4%B8%8E%E6%89%93%E5%8C%85" class="hash-link" aria-label="配置与打包的直接链接" title="配置与打包的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="qapp-id-有什么作用怎么设置">Q：App ID 有什么作用？怎么设置？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#qapp-id-%E6%9C%89%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%E6%80%8E%E4%B9%88%E8%AE%BE%E7%BD%AE" class="hash-link" aria-label="Q：App ID 有什么作用？怎么设置？的直接链接" title="Q：App ID 有什么作用？怎么设置？的直接链接">​</a></h3>
<p>App ID 用于区分不同的软件项目。在打包/加密时设置一个 App ID（如 <code>myapp1</code>），在管理后台生成激活码时也需要填写相同的 App ID。不同的软件建议使用不同的 App ID，方便独立管理。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="qapp-id-填错了会怎样">Q：App ID 填错了会怎样？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#qapp-id-%E5%A1%AB%E9%94%99%E4%BA%86%E4%BC%9A%E6%80%8E%E6%A0%B7" class="hash-link" aria-label="Q：App ID 填错了会怎样？的直接链接" title="Q：App ID 填错了会怎样？的直接链接">​</a></h3>
<p>如果管理后台生成激活码时填写的 App ID 与打包/加密时设置的 App ID 不一致，用户激活时会验证失败。请确保两端的 App ID <strong>完全一致</strong>。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q后台地址和��密钥填写后点击打开管理后台没反应">Q：后台地址和密钥填写后，点击打开管理后台没反应？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%90%8E%E5%8F%B0%E5%9C%B0%E5%9D%80%E5%92%8C%E5%AF%86%E9%92%A5%E5%A1%AB%E5%86%99%E5%90%8E%E7%82%B9%E5%87%BB%E6%89%93%E5%BC%80%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0%E6%B2%A1%E5%8F%8D%E5%BA%94" class="hash-link" aria-label="Q：后台地址和密钥填写后，点击打开管理后台没反应？的直接链接" title="Q：后台地址和密钥填写后，点击打开管理后台没反应？的直接链接">​</a></h3>
<p>请检查以下几点：</p>
<ol>
<li>是否完整粘贴了后台地址和密钥，包括 <code>leapeverurl_</code> 和 <code>leapeverkey_</code> 前缀</li>
<li>是否有多余的空格或换行符</li>
<li>是否手动修改了内容（请勿手动修改，直接完整粘贴）</li>
</ol>
<p><img decoding="async" loading="lazy" alt="填写后台地址和密钥" src="https://tutorial.leapever.com/assets/images/html2exe-network-validation-input-url-key-79936eb88b2809c621a0a0423446e947.png" width="1176" height="768" class="img_SS3x"></p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q可以在多台电脑上使用同一组后台地址和密钥吗">Q：可以在多台电脑上使用同一组后台地址和密钥吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%A4%9A%E5%8F%B0%E7%94%B5%E8%84%91%E4%B8%8A%E4%BD%BF%E7%94%A8%E5%90%8C%E4%B8%80%E7%BB%84%E5%90%8E%E5%8F%B0%E5%9C%B0%E5%9D%80%E5%92%8C%E5%AF%86%E9%92%A5%E5%90%97" class="hash-link" aria-label="Q：可以在多台电脑上使用同一组后台地址和密钥吗？的直接链接" title="Q：可以在多台电脑上使用同一组后台地址和密钥吗？的直接链接">​</a></h3>
<p><strong>可以。</strong> 后台地址和密钥与你的账号绑定，可以在不同的电脑上使用同一组凭证进行打包和管理激活码。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="用户激活相关">用户激活相关<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E7%94%A8%E6%88%B7%E6%BF%80%E6%B4%BB%E7%9B%B8%E5%85%B3" class="hash-link" aria-label="用户激活相关的直接链接" title="用户激活相关的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q用户激活时提示失败是什么原因">Q：用户激活时提示失败是什么原因？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%94%A8%E6%88%B7%E6%BF%80%E6%B4%BB%E6%97%B6%E6%8F%90%E7%A4%BA%E5%A4%B1%E8%B4%A5%E6%98%AF%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0" class="hash-link" aria-label="Q：用户激活时提示失败是什么原因？的直接链接" title="Q：用户激活时提示失败是什么原因？的直接链接">​</a></h3>
<p>常见原因包括：</p>
<ol>
<li><strong>激活码与 App ID 不匹配</strong>：确保激活码是针对该软件的 App ID 生成的</li>
<li><strong>激活码已被使用</strong>：该激活码已经在另一台机器上激活过</li>
<li><strong>激活码已过期</strong>：检查激活码的有效期</li>
<li><strong>激活码已被禁用</strong>：在后台检查激活码状态</li>
<li><strong>网络问题</strong>：用户的网络无法连接验证服务器</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q用户激活时需要联网吗">Q：用户激活时需要联网吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%94%A8%E6%88%B7%E6%BF%80%E6%B4%BB%E6%97%B6%E9%9C%80%E8%A6%81%E8%81%94%E7%BD%91%E5%90%97" class="hash-link" aria-label="Q：用户激活时需要联网吗？的直接链接" title="Q：用户激活时需要联网吗？的直接链接">​</a></h3>
<p><strong>需要。</strong> 网络验证顾名思义需要联网才能完成激活和验证。如果用户的环境无法联网，建议改用<strong>离线一机一码</strong>验证方式。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q用户每次打开软件都需要联网验证吗">Q：用户每次打开软件都需要联网验证吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%94%A8%E6%88%B7%E6%AF%8F%E6%AC%A1%E6%89%93%E5%BC%80%E8%BD%AF%E4%BB%B6%E9%83%BD%E9%9C%80%E8%A6%81%E8%81%94%E7%BD%91%E9%AA%8C%E8%AF%81%E5%90%97" class="hash-link" aria-label="Q：用户每次打开软件都需要联网验证吗？的直接链接" title="Q：用户每次打开软件都需要联网验证吗？的直接链接">​</a></h3>
<p>激活成功后，软件会在本地保存验证信息。后续打开软件时会尝试联网验证，如果短暂无网络通常不会影响使用，但长期离线可能导致验证失效。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q可以设置允许试用吗">Q：可以设置允许试用吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%8F%AF%E4%BB%A5%E8%AE%BE%E7%BD%AE%E5%85%81%E8%AE%B8%E8%AF%95%E7%94%A8%E5%90%97" class="hash-link" aria-label="Q：可以设置允许试用吗？的直接链接" title="Q：可以设置允许试用吗？的直接链接">​</a></h3>
<p><strong>可以。</strong> 在打包/加密时可以设置<strong>允许试用次数</strong>，用户在未输入激活码的情况下可以试用软件指定次数。试用次数用完后必须输入激活码才能继续使用。</p>
<p><img decoding="async" loading="lazy" alt="配置试用次数" src="https://tutorial.leapever.com/assets/images/html2exe-network-validation-other-info-3b44481adcecdf988729fdb237e522c6.png" width="1365" height="528" class="img_SS3x"></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="后台部署与共用">后台部署与共用<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E5%90%8E%E5%8F%B0%E9%83%A8%E7%BD%B2%E4%B8%8E%E5%85%B1%E7%94%A8" class="hash-link" aria-label="后台部署与共用的直接链接" title="后台部署与共用的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q网络验证后台可以同时给-html打包exe-和-exe一机一码加密大师-使用吗">Q：网络验证后台可以同时给 HTML打包EXE 和 EXE一机一码加密大师 使用吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E5%90%8E%E5%8F%B0%E5%8F%AF%E4%BB%A5%E5%90%8C%E6%97%B6%E7%BB%99-html%E6%89%93%E5%8C%85exe-%E5%92%8C-exe%E4%B8%80%E6%9C%BA%E4%B8%80%E7%A0%81%E5%8A%A0%E5%AF%86%E5%A4%A7%E5%B8%88-%E4%BD%BF%E7%94%A8%E5%90%97" class="hash-link" aria-label="Q：网络验证后台可以同时给 HTML打包EXE 和 EXE一机一码加密大师 使用吗？的直接链接" title="Q：网络验证后台可以同时给 HTML打包EXE 和 EXE一机一码加密大师 使用吗？的直接链接">​</a></h3>
<p><strong>可以。</strong> 网络验证后台后部署完成后，HTML打包EXE工具 和 EXE一机一码加密大师 可以共用同一个后台地址和密钥。两款软件的网络验证功能使用的是同一套验证系统，只需将后台地址和密钥分别填入两款工具的网络验证配置页面即可。</p>
<p>通过设置不同的 <strong>App ID</strong> 来区分不同的软件项目，管理后台可以统一管理所有软件的激活码。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q两款软件共用后台时激活码是通用的吗">Q：两款软件共用后台时，激活码是通用的吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E4%B8%A4%E6%AC%BE%E8%BD%AF%E4%BB%B6%EF%BF%BD%E5%85%B1%E7%94%A8%E5%90%8E%E5%8F%B0%E6%97%B6%E6%BF%80%E6%B4%BB%E7%A0%81%E6%98%AF%E9%80%9A%E7%94%A8%E7%9A%84%E5%90%97" class="hash-link" aria-label="Q：两款软件共用后台时，激活码是通用的吗？的直接链接" title="Q：两款软件共用后台时，激活码是通用的吗？的直接链接">​</a></h3>
<p><strong>不是通用的。</strong> 虽然后台是同一个，但激活码是通过 <strong>App ID</strong> 来区分的。HTML打包EXE打包的软件和EXE加密大师加密的软件如果设置了不同的 App ID，它们的激活码互不通用。只有 App ID 相同的软件之间，激活码才能通用。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q购买网络验证服务后需要自己部署服务器吗">Q：购买网络验证服务后需要自己部署服务器吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E8%B4%AD%E4%B9%B0%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%90%8E%E9%9C%80%E8%A6%81%E8%87%AA%E5%B7%B1%E9%83%A8%E7%BD%B2%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%97" class="hash-link" aria-label="Q：购买网络验证服务后需要自己部署服务器吗？的直接链接" title="Q：购买网络验证服务后需要自己部署服务器吗？的直接链接">​</a></h3>
<p><strong>不需要。</strong> 购买后会直接收到后台地址和密钥，使用的是官方服务器，无需自行部署。将收到的 <code>leapeverurl_xxxxxxxx</code> 和 <code>leapeverkey_xxxxxxxx</code> 粘贴到工具中即可使用。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q可以部署自己的网络验证服务器吗">Q：可以部署自己的网络验证服务器吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%8F%AF%E4%BB%A5%E9%83%A8%E7%BD%B2%E8%87%AA%E5%B7%B1%E7%9A%84%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%97" class="hash-link" aria-label="Q：可以部署自己的网络验证服务器吗？的直接链接" title="Q：可以部署自己的网络验证服务器吗？的直接链接">​</a></h3>
<p><strong>可以。</strong> 如果有特殊需求，可以定制部署独立的验证后台。具体价格请访问购买页面或联系客服：<a href="https://leapever.com/purchase/network-validation" target="_blank" rel="noopener noreferrer">查看详细价格</a></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="续费与费用">续费与费用<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E7%BB%AD%E8%B4%B9%E4%B8%8E%E8%B4%B9%E7%94%A8" class="hash-link" aria-label="续费与费用的直接链接" title="续费与费用的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q网络验证服务到期后已激活的用户会受影响吗">Q：网络验证服务到期后，已激活的用户会受影响吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%88%B0%E6%9C%9F%E5%90%8E%E5%B7%B2%E6%BF%80%E6%B4%BB%E7%9A%84%E7%94%A8%E6%88%B7%E4%BC%9A%E5%8F%97%E5%BD%B1%E5%93%8D%E5%90%97" class="hash-link" aria-label="Q：网络验证服务到期后，已激活的用户会受影响吗？的直接链接" title="Q：网络验证服务到期后，已激活的用户会受影响吗？的直接链接">​</a></h3>
<p><strong>不会。</strong> 服务到期后，已激活的用户可以继续正常使用软件。但你将无法通过管理后台生成新的激活码或管理已有激活码。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q续费后数据会丢失吗">Q：续费后数据会丢失吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%BB%AD%E8%B4%B9%E5%90%8E%E6%95%B0%E6%8D%AE%E4%BC%9A%E4%B8%A2%E5%A4%B1%E5%90%97" class="hash-link" aria-label="Q：续费后数据会丢失吗？的直接链接" title="Q：续费后数据会丢失吗？的直接链接">​</a></h3>
<p><strong>不会。</strong> 续费后使用相同账号购买即可，原有的激活码数据会自动恢复，无需重新配置。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q网络验证和离线一机一码哪个更适合我">Q：网络验证和离线一机一码哪个更适合我？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%BD%91%E7%BB%9C%E9%AA%8C%E8%AF%81%E5%92%8C%E7%A6%BB%E7%BA%BF%E4%B8%80%E6%9C%BA%E4%B8%80%E7%A0%81%E5%93%AA%E4%B8%AA%E6%9B%B4%E9%80%82%E5%90%88%E6%88%91" class="hash-link" aria-label="Q：网络验证和离线一机一码哪个更适合我？的直接链接" title="Q：网络验证和离线一机一码哪个更适合我？的直接链接">​</a></h3>
<table><thead><tr><th>场景</th><th>推荐方式</th></tr></thead><tbody><tr><td>用户量大，需要批量分发激活码</td><td>网络验证</td></tr><tr><td>需要远程管理和禁用用户</td><td>网络验证</td></tr><tr><td>用户环境无法联网</td><td>离线一机一码</td></tr><tr><td>不想维护后台，用户量少</td><td>离线一机一码</td></tr><tr><td>需要设置激活码有效期</td><td>网络验证</td></tr></tbody></table>
<p>更多对比详情可参考：<a href="https://leapever.com/tutorial/offline-vs-network-verification" target="_blank" rel="noopener noreferrer">离线一机一码验证和网络验证的区别</a></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="安全性">安全性<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E5%AE%89%E5%85%A8%E6%80%A7" class="hash-link" aria-label="安全性的直接链接" title="安全性的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q后台地址和密钥可以分享给别人吗">Q：后台地址和密钥可以分享给别人吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E5%90%8E%E5%8F%B0%E5%9C%B0%E5%9D%80%E5%92%8C%E5%AF%86%E9%92%A5%E5%8F%AF%E4%BB%A5%E5%88%86%E4%BA%AB%E7%BB%99%E5%88%AB%E4%BA%BA%E5%90%97" class="hash-link" aria-label="Q：后台地址和密钥可以分享给别人吗？的直接链接" title="Q：后台地址和密钥可以分享给别人吗？的直接链接">​</a></h3>
<p><strong>不建议。</strong> 后台地址和密钥是你专属的管理凭证，分享后他人可以管理你的全部激活码（包括生成、删除、禁用等操作）。请妥善保管。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q激活码被泄露了怎么办">Q：激活码被泄露了怎么办？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E6%BF%80%E6%B4%BB%E7%A0%81%E8%A2%AB%E6%B3%84%E9%9C%B2%E4%BA%86%E6%80%8E%E4%B9%88%E5%8A%9E" class="hash-link" aria-label="Q：激活码被泄露了怎么办？的直接链接" title="Q：激活码被泄露了怎么办？的直接链接">​</a></h3>
<p>由于是一机一码机制，即使激活码被泄露，也只能在已绑定的那台机器上使用。如果激活码尚未被使用就泄露了，可以在管理后台<strong>删除</strong>该激活码并重新生成新的。</p>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="q用户可以通过修改系统时间来绕过有效期吗">Q：用户可以通过修改系统时间来绕过有效期吗？<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#q%E7%94%A8%E6%88%B7%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E4%BF%AE%E6%94%B9%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%97%B4%E6%9D%A5%E7%BB%95%E8%BF%87%E6%9C%89%E6%95%88%E6%9C%9F%E5%90%97" class="hash-link" aria-label="Q：用户可以通过修改系统时间来绕过有效期吗？的直接链接" title="Q：用户可以通过修改系统时间来绕过有效期吗？的直接链接">​</a></h3>
<p><strong>不能。</strong> 网络验证的有效期是由服务器端控制的，不依赖用户本地的系统时间，因此修改本地时间无法绕过有效期限制。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-network-validation-faq#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html2exe-network-validation-setup-guide" target="_blank" rel="noopener noreferrer">网络验证接入指南</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-network-validation-admin-guide" target="_blank" rel="noopener noreferrer">网络验证管理后台使用指南</a></li>
<li><a href="https://leapever.com/intro/html2exe/docs/network-validation" target="_blank" rel="noopener noreferrer">网络验证功能说明</a></li>
<li><a href="https://leapever.com/tutorial/offline-vs-network-verification" target="_blank" rel="noopener noreferrer">离线一机一码验证和网络验证的区别</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-encryption-comparison" target="_blank" rel="noopener noreferrer">HTML打包EXE三种加密方式对比</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-encrypt-tutorial" target="_blank" rel="noopener noreferrer">HTML打包EXE离线一机一码使用详细教程</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="EXE加密" term="EXE加密"/>
        <category label="网络验证" term="网络验证"/>
        <category label="一机一码" term="一机一码"/>
        <category label="常见问题" term="常见问题"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE透明窗口教程 - 打造炫酷无边框透明桌面应用]]></title>
        <id>https://tutorial.leapever.com/html2exe-transparent-window-guide</id>
        <link href="https://tutorial.leapever.com/html2exe-transparent-window-guide"/>
        <updated>2026-04-26T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用HTML打包EXE工具的无边框窗口功能，结合CSS透明背景和 -webkit-app-region 拖动属性，可以打造出炫酷的透明桌面应用程序。告别千篇一律的标准窗口，让你的应用拥有独特的视觉风格。]]></summary>
        <content type="html"><![CDATA[<p>使用HTML打包EXE工具的<strong>无边框窗口</strong>功能，结合CSS透明背景和 <code>-webkit-app-region</code> 拖动属性，可以打造出炫酷的透明桌面应用程序。告别千篇一律的标准窗口，让你的应用拥有独特的视觉风格。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="实现原理">实现原理<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86" class="hash-link" aria-label="实现原理的直接链接" title="实现原理的直接链接">​</a></h2>
<p>透明窗口的实现需要两个关键步骤配合：</p>
<ol>
<li><strong>打包工具端</strong>：勾选「无边框窗口」选项，去掉系统默认的标题栏和窗口边框</li>
<li><strong>HTML/CSS端</strong>：将页面背景设为透明，让窗口呈现透明效果；同时使用 <code>-webkit-app-region: drag</code> 让用户可以拖动窗口</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="打包工具配置">打包工具配置<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E6%89%93%E5%8C%85%E5%B7%A5%E5%85%B7%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="打包工具配置的直接链接" title="打包工具配置的直接链接">​</a></h2>
<p>在打包工具主界面切换到<strong>高级配置</strong>标签页，勾选<strong>无边框窗口</strong>选项：</p>
<p><img decoding="async" loading="lazy" alt="勾选无边框窗口" src="https://tutorial.leapever.com/assets/images/html2exe-transparent-noframe-setting-806207372d05d3d7ef8626a7a97389d4.png" width="1176" height="768" class="img_SS3x"></p>
<table><thead><tr><th>配置项</th><th>说明</th></tr></thead><tbody><tr><td><strong>无边框窗口</strong></td><td>勾选后，打包的EXE文件将没有窗口边框和标题栏</td></tr></tbody></table>
<blockquote>
<p><strong>提示</strong>：勾选无边框窗口后，系统自带的标题栏（包括最小化、最大化、关闭按钮）将被移除，需要在HTML中自行实现这些功能。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="设置透明背景">设置透明背景<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E8%AE%BE%E7%BD%AE%E9%80%8F%E6%98%8E%E8%83%8C%E6%99%AF" class="hash-link" aria-label="设置透明背景的直接链接" title="设置透明背景的直接链接">​</a></h2>
<p>在HTML文件中，将 <code>html</code> 和 <code>body</code> 的背景色设置为透明：</p>
<div class="language-css codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-css codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">html</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">body</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">margin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">transparent</span><span class="token plain"> </span><span class="token important">!important</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这样窗口中没有内容覆盖的区域将直接透明，可以看到桌面背景。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="实现窗口拖动">实现窗口拖动<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E5%AE%9E%E7%8E%B0%E7%AA%97%E5%8F%A3%E6%8B%96%E5%8A%A8" class="hash-link" aria-label="实现窗口拖动的直接链接" title="实现窗口拖动的直接链接">​</a></h2>
<p>无边框窗口去掉了系统标题栏，用户无法通过标题栏拖动窗口。此时需要使用 <code>-webkit-app-region</code> 属性来指定可拖动区域：</p>
<div class="language-css codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-css codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* 设置整个容器可拖动 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.drag-area</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">-webkit-app-region</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> drag</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* 按钮、输入框等交互元素需要排除拖动，否则无法点击 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">button</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">input</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">a</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.no-drag</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">-webkit-app-region</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> no-drag</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="关键规则">关键规则<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E5%85%B3%E9%94%AE%E8%A7%84%E5%88%99" class="hash-link" aria-label="关键规则的直接链接" title="关键规则的直接链接">​</a></h3>
<table><thead><tr><th>属性值</th><th>说明</th></tr></thead><tbody><tr><td><code>drag</code></td><td>设置该区域可以拖动窗口，类似系统标题栏的效果</td></tr><tr><td><code>no-drag</code></td><td>排除该区域的拖动行为，使其可以正常点击和交互</td></tr></tbody></table>
<blockquote>
<p><strong>注意</strong>：被设置为 <code>drag</code> 的区域将无法响应鼠标点击事件。因此按钮、链接、输入框等需要交互的元素，必须单独设置 <code>no-drag</code>，否则用户将无法点击。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="自定义关闭最小化按钮">自定义关闭/最小化按钮<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%B3%E9%97%AD%E6%9C%80%E5%B0%8F%E5%8C%96%E6%8C%89%E9%92%AE" class="hash-link" aria-label="自定义关闭/最小化按钮的直接链接" title="自定义关闭/最小化按钮的直接链接">​</a></h2>
<p>去掉系统标题栏后，需要自己实现窗口控制按钮。可以通过开启<strong>API支持</strong>来调用窗口控制功能：</p>
<ol>
<li>在高级配置中勾选 <strong>开启API支持</strong></li>
<li>在HTML中使用以下JS API控制窗口：</li>
</ol>
<div class="language-javascript codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-javascript codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 最小化窗口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">minimize</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 最大化/还原窗口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">maximize</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 恢复窗口大小</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">restore</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 关闭窗口</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token dom variable" style="color:#36acaa">window</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">HTMLPackHelper</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">close</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="完整示例赛博朋克桌面时钟">完整示例：赛博朋克桌面时钟<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E5%AE%8C%E6%95%B4%E7%A4%BA%E4%BE%8B%E8%B5%9B%E5%8D%9A%E6%9C%8B%E5%85%8B%E6%A1%8C%E9%9D%A2%E6%97%B6%E9%92%9F" class="hash-link" aria-label="完整示例：赛博朋克桌面时钟的直接链接" title="完整示例：赛博朋克桌面时钟的直�接链接">​</a></h2>
<p>下面是一个赛博朋克风格的透明桌面时钟组件，带有霓虹灯光效、扫描线动画和实时时钟，可以直接用于打包：</p>
<div class="language-html codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-html codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">DOCTYPE</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">meta</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">charset</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">UTF-8</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">title</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Cyber Clock</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">title</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">style</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector" style="color:#00009f">*</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">box-sizing</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> border-box</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector" style="color:#00009f">html</span><span class="token style language-css selector punctuation" style="color:#393A34">,</span><span class="token style language-css selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css selector" style="color:#00009f">            body</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color">transparent</span><span class="token style language-css"> </span><span class="token style language-css important">!important</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">100</span><span class="token style language-css unit">%</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-family</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css string" style="color:#e3116c">'Consolas'</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"> </span><span class="token style language-css string" style="color:#e3116c">'Courier New'</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"> monospace</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">overflow</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> hidden</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">-webkit-user-select</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> none</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">user-select</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> none</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.panel</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">width</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">100</span><span class="token style language-css unit">%</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">100</span><span class="token style language-css unit">%</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-direction</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> column</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">px</span><span class="token style language-css"> solid </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.25</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">10</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">15</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.85</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">position</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> relative</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css comment" style="color:#999988;font-style:italic">/* 扫描线动画 */</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.panel</span><span class="token style language-css selector pseudo-element" style="color:#00009f">::after</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">content</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css string" style="color:#e3116c">''</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">position</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> absolute</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">left</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">right</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">2</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css function" style="color:#d73a49">linear-gradient</span><span class="token style language-css punctuation" style="color:#393A34">(</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css number" style="color:#36acaa">90</span><span class="token style language-css unit">deg</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css color">transparent</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.4</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css color">transparent</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">animation</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> scanline </span><span class="token style language-css number" style="color:#36acaa">3</span><span class="token style language-css unit">s</span><span class="token style language-css"> linear infinite</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">pointer-events</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> none</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">z-index</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">10</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css atrule rule" style="color:#00a4db">@keyframes</span><span class="token style language-css atrule" style="color:#00a4db"> scanline</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css selector" style="color:#00009f">0%</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">opacity</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css selector" style="color:#00009f">50%</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">opacity</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0.5</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css selector" style="color:#00009f">100%</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">100</span><span class="token style language-css unit">%</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">opacity</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css comment" style="color:#999988;font-style:italic">/* 顶栏 - 可拖动 */</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.top-bar</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">-webkit-app-region</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> drag</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">align-items</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">justify-content</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> space-between</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">8</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">14</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-bottom</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">px</span><span class="token style language-css"> solid </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.12</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-shrink</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.top-bar</span><span class="token style language-css selector" style="color:#00009f"> </span><span class="token style language-css selector class" style="color:#00009f">.sys-label</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">10</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.5</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">letter-spacing</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">3</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">text-transform</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> uppercase</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.top-bar</span><span class="token style language-css selector" style="color:#00009f"> </span><span class="token style language-css selector class" style="color:#00009f">.dot</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> inline-block</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">width</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-radius</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">50</span><span class="token style language-css unit">%</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#0fa</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-right</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">8</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">box-shadow</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#0fa</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">animation</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> blink </span><span class="token style language-css number" style="color:#36acaa">2</span><span class="token style language-css unit">s</span><span class="token style language-css"> ease infinite</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css atrule rule" style="color:#00a4db">@keyframes</span><span class="token style language-css atrule" style="color:#00a4db"> blink</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css selector" style="color:#00009f">0%</span><span class="token style language-css selector punctuation" style="color:#393A34">,</span><span class="token style language-css selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css selector" style="color:#00009f">                100%</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">opacity</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css selector" style="color:#00009f">50%</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css property" style="color:#36acaa">opacity</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0.3</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css comment" style="color:#999988;font-style:italic">/* 窗口按钮 */</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.win-btns</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">gap</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">-webkit-app-region</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> no-drag</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.win-btns</span><span class="token style language-css selector" style="color:#00009f"> button</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">width</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">18</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">18</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">px</span><span class="token style language-css"> solid </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.25</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color">transparent</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.6</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">10</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">cursor</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> pointer</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">align-items</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">justify-content</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">transition</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> all </span><span class="token style language-css number" style="color:#36acaa">0.15</span><span class="token style language-css unit">s</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.win-btns</span><span class="token style language-css selector" style="color:#00009f"> button</span><span class="token style language-css selector pseudo-class" style="color:#00009f">:hover</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.12</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.6</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#0fa</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.win-btns</span><span class="token style language-css selector" style="color:#00009f"> </span><span class="token style language-css selector class" style="color:#00009f">.btn-x</span><span class="token style language-css selector pseudo-class" style="color:#00009f">:hover</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">60</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">60</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.2</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">60</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">60</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.6</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#ff5050</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css comment" style="color:#999988;font-style:italic">/* 时钟主体 */</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.clock-body</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> flex</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-direction</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> column</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">align-items</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">justify-content</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">24</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.time</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">64</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-weight</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">700</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#0fa</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">letter-spacing</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">4</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">text-shadow</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">20</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.35</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-variant-numeric</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> tabular-nums</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">line-height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.time</span><span class="token style language-css selector" style="color:#00009f"> </span><span class="token style language-css selector class" style="color:#00009f">.colon</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">animation</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> blink </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">s</span><span class="token style language-css"> step-end infinite</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.date-row</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">8</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">13</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.4</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">letter-spacing</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">2</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css comment" style="color:#999988;font-style:italic">/* 分隔线 */</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.sep</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">24</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">height</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">background</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css function" style="color:#d73a49">linear-gradient</span><span class="token style language-css punctuation" style="color:#393A34">(</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css number" style="color:#36acaa">90</span><span class="token style language-css unit">deg</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css color">transparent</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.2</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">,</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                    </span><span class="token style language-css color">transparent</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-shrink</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css comment" style="color:#999988;font-style:italic">/* 底部信息 */</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.info-grid</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> grid</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">grid-template-columns</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">fr</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">fr</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">fr</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">gap</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">12</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">24</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">text-align</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> center</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">flex-shrink</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.info-item</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">padding</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">6</span><span class="token style language-css unit">px</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">0</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.info-item</span><span class="token style language-css selector pseudo-class" style="color:#00009f">:not</span><span class="token style language-css selector punctuation" style="color:#393A34">(</span><span class="token style language-css selector pseudo-class" style="color:#00009f">:last-child</span><span class="token style language-css selector punctuation" style="color:#393A34">)</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">border-right</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">1</span><span class="token style language-css unit">px</span><span class="token style language-css"> solid </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.08</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.info-val</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">18</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css hexcode color">#0fa</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-weight</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">700</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> block</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css selector class" style="color:#00009f">.info-label</span><span class="token style language-css"> </span><span class="token style language-css punctuation" style="color:#393A34">{</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">font-size</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">9</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">color</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css color function" style="color:#d73a49">rgba</span><span class="token style language-css color punctuation" style="color:#393A34">(</span><span class="token style language-css color number" style="color:#36acaa">0</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">255</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">200</span><span class="token style language-css color punctuation" style="color:#393A34">,</span><span class="token style language-css color"> </span><span class="token style language-css color number" style="color:#36acaa">0.35</span><span class="token style language-css color punctuation" style="color:#393A34">)</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">letter-spacing</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">2</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">text-transform</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> uppercase</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">margin-top</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> </span><span class="token style language-css number" style="color:#36acaa">4</span><span class="token style language-css unit">px</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">                </span><span class="token style language-css property" style="color:#36acaa">display</span><span class="token style language-css punctuation" style="color:#393A34">:</span><span class="token style language-css"> block</span><span class="token style language-css punctuation" style="color:#393A34">;</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">            </span><span class="token style language-css punctuation" style="color:#393A34">}</span><span class="token style language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token style language-css">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">style</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">panel</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">top-bar</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">dot</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">sys-label</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">System Monitor</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">win-btns</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript dom variable" style="color:#36acaa">window</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript property-access maybe-class-name" style="color:#e3116c">HTMLPackHelper</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript method function property-access" style="color:#d73a49">minimize</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">─</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">btn-x</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript dom variable" style="color:#36acaa">window</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript property-access maybe-class-name" style="color:#e3116c">HTMLPackHelper</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript method function property-access" style="color:#d73a49">close</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">✕</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">clock-body</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">time</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">clock</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    00</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">colon</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">:</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">00</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">colon</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">:</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">00</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">date-row</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">date-row</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">----/--/--</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">sep</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-grid</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-item</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-val</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">run-time</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">00:00</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-label</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">运行时长</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-item</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-val</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">fps</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">--</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-label</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">FPS</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-item</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-val</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">mem</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">-- MB</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">info-label</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">内存</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> weekdays </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript string" style="color:#e3116c">'日'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'一'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'二'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'三'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'四'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'五'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'六'</span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> startTime </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript known-class-name class-name">Date</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">now</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript keyword" style="color:#00009f">let</span><span class="token script language-javascript"> frames </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">0</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                lastFpsTime </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript known-class-name class-name">Date</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">now</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                currentFps </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">0</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript keyword" style="color:#00009f">function</span><span class="token script language-javascript"> </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript parameter">n</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">return</span><span class="token script language-javascript"> n </span><span class="token script language-javascript operator" style="color:#393A34">&lt;</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">10</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">?</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'0'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"> n </span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> n</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript keyword" style="color:#00009f">function</span><span class="token script language-javascript"> </span><span class="token script language-javascript function" style="color:#d73a49">tick</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> now </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:#00009f">new</span><span class="token script language-javascript"> </span><span class="token script language-javascript class-name">Date</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'clock'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">innerHTML</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getHours</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript string" style="color:#e3116c">'&lt;span class="colon"&gt;:&lt;/span&gt;'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getMinutes</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript string" style="color:#e3116c">'&lt;span class="colon"&gt;:&lt;/span&gt;'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getSeconds</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'date-row'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">textContent</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getFullYear</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript string" style="color:#e3116c">'/'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getMonth</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">1</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript string" style="color:#e3116c">'/'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getDate</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript string" style="color:#e3116c">'  星期'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    weekdays</span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript">now</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getDay</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript comment" style="color:#999988;font-style:italic">// 运行时长</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> elapsed </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript known-class-name class-name">Math</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">floor</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript known-class-name class-name">Date</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">now</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">-</span><span class="token script language-javascript"> startTime</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">/</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">1000</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> m </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript known-class-name class-name">Math</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">floor</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">elapsed </span><span class="token script language-javascript operator" style="color:#393A34">/</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">60</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    s </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> elapsed </span><span class="token script language-javascript operator" style="color:#393A34">%</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">60</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'run-time'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">textContent</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">m</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">':'</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"> </span><span class="token script language-javascript function" style="color:#d73a49">pad</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">s</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript comment" style="color:#999988;font-style:italic">// FPS</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                frames</span><span class="token script language-javascript operator" style="color:#393A34">++</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">if</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript known-class-name class-name">Date</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">now</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">-</span><span class="token script language-javascript"> lastFpsTime </span><span class="token script language-javascript operator" style="color:#393A34">&gt;=</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">1000</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    currentFps </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> frames</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    frames </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">0</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    lastFpsTime </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript known-class-name class-name">Date</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">now</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'fps'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">textContent</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> currentFps </span><span class="token script language-javascript operator" style="color:#393A34">||</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'--'</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript comment" style="color:#999988;font-style:italic">// 内存</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">if</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript dom variable" style="color:#36acaa">performance</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">memory</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> mb </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript dom variable" style="color:#36acaa">performance</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">memory</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">usedJSHeapSize</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">/</span><span class="token script language-javascript"> </span><span class="token script language-javascript number" style="color:#36acaa">1048576</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">toFixed</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript number" style="color:#36acaa">1</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                    </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'mem'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">textContent</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> mb </span><span class="token script language-javascript operator" style="color:#393A34">+</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">' MB'</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">                </span><span class="token script language-javascript function" style="color:#d73a49">requestAnimationFrame</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">tick</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">            </span><span class="token script language-javascript function" style="color:#d73a49">requestAnimationFrame</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">tick</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">        </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="打包配置要点">打包配置要点<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E6%89%93%E5%8C%85%E9%85%8D%E7%BD%AE%E8%A6%81%E7%82%B9" class="hash-link" aria-label="打包配置要点的直接链接" title="打包配置要点的直接链接">​</a></h3>
<p>使用上面的HTML打包时，需要在打包工具中做以下配置：</p>
<ol>
<li><strong>快速打包</strong>页面：选择该HTML文件作为本地主文件</li>
<li><strong>高级配置</strong>页面：<!-- -->
<ul>
<li>✅ 勾选 <strong>无边框窗口</strong></li>
<li>✅ 勾选 <strong>开启API支持</strong>（用于窗口控制按钮）</li>
<li>✅ 勾选 <strong>置顶窗口</strong>, 可以让整个html时钟始终显示在最前面</li>
<li>窗口大小建议设为 <strong>宽度 350</strong>、<strong>高度 200</strong></li>
</ul>
</li>
<li>内核选择 <strong>Chrome内核</strong>（透明效果仅Chrome内核支持）</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="效果预览">效果预览<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E6%95%88%E6%9E%9C%E9%A2%84%E8%A7%88" class="hash-link" aria-label="效果预览的直接链接" title="效果预览的直接链接">​</a></h3>
<p>打包后运行效果如下，赛博朋克风格的时钟面板悬浮在桌面上，带有扫描线动画和霓虹灯光效果：</p>
<p><img decoding="async" loading="lazy" alt="透明窗口效果" src="https://tutorial.leapever.com/assets/images/html2exe-transparent-window-demo-32cad9f90773ae3b54845474db3f675f.png" width="1189" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="进阶技巧">进阶技巧<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E8%BF%9B%E9%98%B6%E6%8A%80%E5%B7%A7" class="hash-link" aria-label="进阶技巧的直接链接" title="进阶技巧的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="1-只让部分区域可拖动">1. 只让部分区域可拖动<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#1-%E5%8F%AA%E8%AE%A9%E9%83%A8%E5%88%86%E5%8C%BA%E5%9F%9F%E5%8F%AF%E6%8B%96%E5%8A%A8" class="hash-link" aria-label="1. 只让部分区域可拖动的直接链接" title="1. 只让部分区域可拖动的直接链接">​</a></h3>
<p>如果只想让标题栏可拖动，其余区域正常交互：</p>
<div class="language-css codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-css codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* 仅标题栏可拖动 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.title-bar</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">-webkit-app-region</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> drag</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* 标题栏内的按钮排除拖动 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.title-bar</span><span class="token selector" style="color:#00009f"> button</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">-webkit-app-region</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> no-drag</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="2-半透明磨砂背景">2. 半透明磨砂背景<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#2-%E5%8D%8A%E9%80%8F%E6%98%8E%E7%A3%A8%E7%A0%82%E8%83%8C%E6%99%AF" class="hash-link" aria-label="2. 半透明磨砂背景的直接链接" title="2. 半透明磨砂背景的直接链接">​</a></h3>
<p>可以在深色背景上使用 <code>rgba</code> 和 <code>backdrop-filter</code> 实现层叠的半透明磨砂效果：</p>
<div class="language-css codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-css codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token selector class" style="color:#00009f">.container</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color function" style="color:#d73a49">rgba</span><span class="token color punctuation" style="color:#393A34">(</span><span class="token color number" style="color:#36acaa">255</span><span class="token color punctuation" style="color:#393A34">,</span><span class="token color"> </span><span class="token color number" style="color:#36acaa">255</span><span class="token color punctuation" style="color:#393A34">,</span><span class="token color"> </span><span class="token color number" style="color:#36acaa">255</span><span class="token color punctuation" style="color:#393A34">,</span><span class="token color"> </span><span class="token color number" style="color:#36acaa">0.1</span><span class="token color punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">backdrop-filter</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">blur</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">-webkit-backdrop-filter</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">blur</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="3-异形窗口效果">3. 异形窗口效果<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#3-%E5%BC%82%E5%BD%A2%E7%AA%97%E5%8F%A3%E6%95%88%E6%9E%9C" class="hash-link" aria-label="3. 异形窗口效果的直接链接" title="3. 异形窗口效果的直接链接">​</a></h3>
<p>利用 <code>border-radius</code> 制作圆角甚至圆形窗口：</p>
<div class="language-css codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-css codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token selector class" style="color:#00009f">.card</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">border-radius</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* 圆角矩形 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.circle-window</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">border-radius</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* 圆形窗口 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">width</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">height</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_JmGV" id="4-窗口阴影效果">4. 窗口阴影效果<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#4-%E7%AA%97%E5%8F%A3%E9%98%B4%E5%BD%B1%E6%95%88%E6%9E%9C" class="hash-link" aria-label="4. 窗口阴影效果的直接链接" title="4. 窗口阴影效果的直接链接">​</a></h3>
<p>可以用CSS阴影为内部元素添加浮层感：</p>
<div class="language-css codeBlockContainer_mQmQ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_D5yF"><pre tabindex="0" class="prism-code language-css codeBlock_RMoD thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AclH"><span class="token-line" style="color:#393A34"><span class="token selector class" style="color:#00009f">.card</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">box-shadow</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token unit">px</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">32</span><span class="token unit">px</span><span class="token plain"> </span><span class="token color function" style="color:#d73a49">rgba</span><span class="token color punctuation" style="color:#393A34">(</span><span class="token color number" style="color:#36acaa">0</span><span class="token color punctuation" style="color:#393A34">,</span><span class="token color"> </span><span class="token color number" style="color:#36acaa">0</span><span class="token color punctuation" style="color:#393A34">,</span><span class="token color"> </span><span class="token color number" style="color:#36acaa">0</span><span class="token color punctuation" style="color:#393A34">,</span><span class="token color"> </span><span class="token color number" style="color:#36acaa">0.15</span><span class="token color punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_aaMX"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_z5j7" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_FoOz"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_L0B6"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="注意事项">注意事项<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" class="hash-link" aria-label="注意事项的直接链接" title="注意事项的直接链接">​</a></h2>
<ul>
<li>透明窗口效果<strong>仅Chrome内核支持</strong>，IE内核不支持</li>
<li>勾选无边框窗口后，系统标题栏将被移除，请务必自行添加关闭按钮</li>
<li>透明区域可以穿透点击到桌面或下层窗口</li>
<li>使用 <code>-webkit-app-region: drag</code> 的区域无法响应鼠标事件，交互元素需设为 <code>no-drag</code></li>
<li>建议搭配 <strong>开启API支持</strong> 使用，方便调用窗口最小化、最大化、关闭等功能</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-transparent-window-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html2exe-splash-screen-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具启动图设置教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-encrypt-tutorial" target="_blank" rel="noopener noreferrer">HTML打包EXE工具加密功能教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-custom-menu-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具自定义菜单功能详解</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-tab-mode-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具标签页模式详解</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="透明窗口" term="透明窗口"/>
        <category label="无边框窗口" term="无边框窗口"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[HTML打包EXE工具启动图设置 - 为打包程序添加启动画面]]></title>
        <id>https://tutorial.leapever.com/html2exe-splash-screen-guide</id>
        <link href="https://tutorial.leapever.com/html2exe-splash-screen-guide"/>
        <updated>2026-04-23T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[HTML打包EXE工具新增了启动图设置功能，可以为打包生成的EXE程序添加启动画面（Splash Screen）。用户打开程序时，会先显示一张自定义图片，待主页面加载完成后自动关闭并显示主窗口。]]></summary>
        <content type="html"><![CDATA[<p>HTML打包EXE工具新增了<strong>启动图设置</strong>功能，可以为打包生成的EXE程序添加启动画面（Splash Screen）。用户打开程序时，会先显示一张自定义图片，待主页面加载完成后自动关闭并显示主窗口。</p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="下载最新版本">下载最新版本<a href="https://tutorial.leapever.com/html2exe-splash-screen-guide#%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC" class="hash-link" aria-label="下载最新版本的直接链接" title="下载最新版本的直接链接">​</a></h2>
<ul>
<li><a href="https://api.leapever.com/packerv2/download" target="_blank" rel="noopener noreferrer">立即下载最新版本</a></li>
<li><a href="https://leapever.com/intro/html2exe/" target="_blank" rel="noopener noreferrer">HTML打包EXE工具官网</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="功能入口">功能入口<a href="https://tutorial.leapever.com/html2exe-splash-screen-guide#%E5%8A%9F%E8%83%BD%E5%85%A5%E5%8F%A3" class="hash-link" aria-label="功能入口的直接链接" title="功能入口的直接链接">​</a></h2>
<p>在打包工具主界面切换到<strong>版权设置</strong>标签页，在底部可以找到<strong>启动图设置</strong>面板：</p>
<table><thead><tr><th>配置项</th><th>说明</th></tr></thead><tbody><tr><td><strong>启动图片</strong></td><td>选择一张图片作为启动画面，支持 PNG、JPG、JPEG、BMP 格式。推荐使用PNG，支持透明背景</td></tr><tr><td><strong>启动图宽度</strong></td><td>设置启动图的显示宽度（像素），高度按比例自动计算。不填则使用图片原始尺寸</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="使用方法">使用方法<a href="https://tutorial.leapever.com/html2exe-splash-screen-guide#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95" class="hash-link" aria-label="使用方法的直接链接" title="使用方法的直接链接">​</a></h2>
<ol>
<li>点击<strong>选择图片</strong>按钮，选择一张图片文件（PNG、JPG、JPEG、BMP）</li>
<li>可选填写<strong>启动图宽度</strong>（正整数，单位像素），不填则使用原始尺寸</li>
<li>如需清除已选图片，点击<strong>清除</strong>按钮即可</li>
<li>正常执行打包操作</li>
</ol>
<p>打包后的EXE启动时，启动图会居中显示在屏幕上，主页面加载完成后自动关闭。</p>
<p><img decoding="async" loading="lazy" alt="设置启动图" src="https://tutorial.leapever.com/assets/images/html2exe-splash-setting-d86c8acc9412d62460e83db815300d78.png" width="1176" height="768" class="img_SS3x"></p>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="启动图特性">启动图特性<a href="https://tutorial.leapever.com/html2exe-splash-screen-guide#%E5%90%AF%E5%8A%A8%E5%9B%BE%E7%89%B9%E6%80%A7" class="hash-link" aria-label="启动图特性的直接链接" title="启动图特性的直接链接">​</a></h2>
<ul>
<li>无边框、透明背景（PNG透明区域直接透明）</li>
<li>屏幕居中、置顶显示</li>
<li>不在任务栏显示，不可拖动、不可调整大小</li>
<li>主页面加载完成后自动关闭</li>
</ul>
<blockquote>
<p><strong>建议</strong>：使用PNG格式图片，宽度建议 300-600 像素。不需要启动画面时，将图片路径留空即可。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_JmGV" id="相关阅读">相关阅读<a href="https://tutorial.leapever.com/html2exe-splash-screen-guide#%E7%9B%B8%E5%85%B3%E9%98%85%E8%AF%BB" class="hash-link" aria-label="相关阅读的直接链接" title="相关阅读的直接链接">​</a></h2>
<ul>
<li><a href="https://leapever.com/tutorial/html2exe-encrypt-tutorial" target="_blank" rel="noopener noreferrer">HTML打包EXE工具加密功能教程</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-custom-menu-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具自定义菜单功能详解</a></li>
<li><a href="https://leapever.com/tutorial/html2exe-tab-mode-guide" target="_blank" rel="noopener noreferrer">HTML打包EXE工具标签页模式详解</a></li>
</ul>]]></content>
        <category label="HTML打包EXE" term="HTML打包EXE"/>
        <category label="启动图" term="启动图"/>
        <category label="启动画面" term="启动画面"/>
    </entry>
</feed>