部署前 · 先判断主机,不先装补丁
00 · Windows 与 PowerShell 前置条件
实施工具、运维工具和 Factory API 需要 64 位(x64)带桌面的 Windows,并使用系统自带的 Windows PowerShell 5.1。PowerShell 7 是并列产品,不能代替这里要求的 Windows PowerShell 5.1。
只要能跑就不拦:Windows 10 内部版本 14393(1607)及以上的全部编辑、Windows 11 全部版本与编辑、Windows Server 2012 及以上都可以部署,不因微软生命周期被挡。已结束常规更新的版本只会在检查结果里多一句提示,状态仍是通过。
完整解压正式包后,双击 00—03 任一入口都会先完成这项检查。若不满足条件,系统会在运行任何产品脚本、申请管理员权限或修改数据库之前停止,并自动打开本页;不要再凭乱码猜原因。
拦下来的只有真的跑不了的:Windows 7、Windows 8.1、Windows 10 内部版本 14393 以前、Windows Server 2008 R2 及更早(都不能运行 .NET 9),以及 32 位、ARM64、Server Core 与 Nano Server(没有桌面,跑不了 WPF 工具)。这些机器可以继续承载旧 ERP、SQL Server 或文件共享,但不要作为当前工具和 Factory API 的运行主机;应由较新主机远程连接这些旧服务。
Windows Server 2012/2012 R2 只差 Windows PowerShell 5.1:分别安装微软 WMF 5.1 的 W2K12-KB3191565-x64.msu 或 Win8.1AndW2K12R2-KB3191564-x64.msu,安装后可能需要重启。不要把任意系统都套用同一个更新包。
微软 Windows Management Framework 5.1 官方下载页
判断顺序:先确认 Windows 版本与位数,再处理 PowerShell。Win7 上把 PowerShell 升到 5.1,并不会让本项目的 .NET 9 工具与 API 变成受支持。
部署 · 配置
选择实例并核对三库
升级已有 API 与新增账套 API 实例是两种不同动作。新增实例不能靠修改旧实例的数据库配置来冒充。
- 1进入部署配置
- 2选择或扫描实例
- 3核对服务与数据库
- 4检查、预检与部署
- 1
进入“部署 · 配置”
新装、升级、实例扫描和运行目录都从这一页处理。先确认左侧当前页面,不在授权页修改部署参数。
- 2
选择升级或新增实例
升级时选择实际运行中的 API;新增账套时点“新建”,创建独立端口、任务名和运行目录。
完成结果:页面顶部显示的维护对象就是本次要处理的实例。
- 3
核对服务、CDB、SDB、MDB
库名必须来自当前客户账套。工具可以列出候选,但不会替实施员猜库名;SQL 登录、照片目录和防火墙也必须按现场事实填写。
- 4
保存、检查、预检、部署
先保存配置,再检查必填项;预检只展示将发生什么,部署才会正式写入和重启。需要管理员权限时会单独提示。
完成结果:右侧结果明确显示通过,实例端口与所选三库一致。
授权 · 资料 · ADMIN
按真实场景维护授权身份
新客户、同客户加账套、换服务器、换账套身份、资料变更和续期不是同一件事。选错会改变身份边界。
- 1进入授权页面
- 2选择维护实例
- 3选择业务场景
- 4核对授权结果
- 1
进入授权页面
这里处理平台申请、批准同步、API Key 高风险恢复和 ADMIN 初始化;普通部署参数回到“部署 · 配置”。
- 2
选中实际运行实例
先核对端口、任务名和运行目录。可选的“核对运行中 API”用于确认当前实例身份,不会替你切换目标。
- 3
选择本次业务场景
新客户首次开通、同客户加账套、换服务器/换身份、资料变更、续期各自提交不同资料。普通续期不应顺手重置身份。
- 4
同步批准并核对结果
平台通过后使用“同步已审授权”。“绑定平台返回 Key”只用于平台已执行 API Key 重置后的恢复,不是正常首次开通步骤。
完成结果:客户、账套、服务器身份、有效期和并发数与平台批准资料一致。
运维工具 · 仅实施员
登录正确账套后进入配置专家
移动功能配置物理位于运维工具,但配置专家只允许实施员使用。先选择 API,再使用该 Factory API 的 ADMIN 登录。
- 1确认 API 与登录身份
- 2进入配置专家
- 3选择移动功能
- 4开始基础绑定
- 1
确认 API 与账号
同一台电脑可以维护多个账套。顶部的 API、地址、客户和登录身份决定后续所有保存动作的作用范围。
- 2
进入“配置专家”
运维管理员没有该页权限;实施员进入后一次只配置一个移动功能。
- 3
选择当前移动功能
功能名称、工作流程和数据环境必须属于当前账套。相似名称不代表可以借用。
- 4
从基础绑定开始
先绑定一条工作流程和一个数据环境,再按编号进入使用范围、字段设置、扫码规则、标签输出、体检与启用。
完成结果:当前功能有清楚的配置对象,后续各页都围绕同一功能保存。
配置专家 · 基础绑定
先定功能,再显式绑定流程与数据环境
工作流程决定业务路线与有效部门;数据环境决定目标表、字段、默认值和计算列。两者都要显式保存,才能继续配置。
- 1选择功能
- 2绑定工作流程
- 3绑定数据环境
- 4保存当前配置
- 1
选择一个移动功能
一次只维护一个功能。页面显示的配置状态、问题和保存结果都属于当前功能;切换前先保存。
- 2
选择工作流程
来货只使用接收部门,出货只使用交货部门,生产交接执行交货部门到接收部门的完整路线,生产作业只使用交货部门。候选可以输入筛选,但最终必须选中真实候选。
- 3
选择数据环境
数据环境必须包含本功能实际要写入或读回的物理列。缺列、失效映射应按具体错误处理,不能用相似表冒充;确实没有配置检查器与读取检查器失败要分开判断。
- 4
保存基础绑定
保存只写当前功能的显式绑定,不会自动替其他功能复制。相似功能可参考已有配置,但仍需逐项核对。
完成结果:页面重载后仍显示同一工作流程、数据环境和功能标识。
配置专家 · 使用范围
把可见人员、角色和业务范围说清楚
使用范围决定谁看得到、谁能操作;它不能代替工作流程,也不能靠客户端隐藏充当权限。
- 1选择授权范围
- 2点选真实对象后添加授权
- 3已选范围
- 4保存范围
- 1
指定可用角色或人员
只给实际岗位授权。实施员、运维管理员与现场操作员不是同一权限层,配置专家本身只给实施员。
- 2
筛选真实候选
候选很多时可按显示文字任意位置筛选;输入只缩小列表,不能把自由文字直接保存为人员、部门或角色。
- 3
检查已选范围
确认没有把测试账号、离职账号或无关部门带进正式范围。若功能按流程限定部门,以流程配置为准,不能在这里另造一套部门规则。
- 4
保存并换账号复验
保存后用有权与无权账号分别登录 APP 验证。只看实施员自己的菜单不足以证明权限正确。
完成结果:有权账号能看到功能,无权账号既看不到入口也不能调用接口。
配置专家 · 字段设置
逐个字段确认输入、补充、更新与读回
字段设置有四页:手机写入、ERP 补值、允许修改、保存后读回。每个目标列都必须在数据环境中声明并有明确来源。
- 1四个字段子页
- 2手机字段与正式目标列
- 3引用字段的来源与带出设置
- 4保存当前子页字段映射
- 1
按四个标签逐页检查
“手机写入”决定录入值写哪列;“ERP 补值”决定其余列的来源;“允许修改”限制修正时可写列;“保存后读回”决定回显和打印用什么。四页分别保存。
- 2
区分输入值与生成值
数量、作业批号等手机输入要显式映射到真实 ERP 列。WorkID 和来货批号按数据环境生成后读回;不能把待生成的正式编号当作随手输入值。
- 3
核对来源、必填和候选
来源可以是手机输入、ERP 列、默认值或计算列;必填、可编辑、下拉候选和显示顺序按现场业务确定。页面给出的建议只是草案,实施员必须确认后保存。
- 4
保存后做读回测试
提交测试记录,再读取同一记录,确认数量、WorkID、标签快照等没有被服务端重新解析成不同值。
完成结果:保存后无未声明列、孤儿映射、重复来源或手机值与服务端值不一致。
配置专家 · 扫码规则
扫码规则忠实读取 PDA 配置
扫码只走 PDA_Params_D。需要扫码的地方也必须允许手工输入同一内容;手输与扫码经过完全相同的校验。
- 1当前功能显式绑定的 PDA 表单
- 2ERP 规则只读列表
- 3实际输出与手机目标字段
- 4单独保存扫码后带入手机字段
- 1
确认规则来自正式 PDA
页面用于读取和核对旧 ERP PDA 配置,不允许在移动端另建第二套正则真源。没有扫码需求的功能不强行添加规则。
- 2
核对码类别、正则和来源
WorkIDRegex、PackIDRegex 等规则必须明确属于哪种码、从哪个业务来源取值。名称相似不等于语义相同。
- 3
先绑定表单,再保存手机目标
先点底部按钮保存 PDA 表单。逐行确认该表单实际输出应带入哪个手机字段,再点区域内“保存:扫码后带入手机字段”。批号、作业人、上游作业号各有实际含义,不能一律映射成 WorkID。
- 4
同时验证扫码与手输
用同一个真实码分别扫码和手输;二者都应通过,错误格式都应被拒绝,且不会产生两套结果。
完成结果:扫码和手输得到同一业务对象、同一字段值和同一校验结果。
配置专家 · 标签输出
把标签模板、字段和补打快照绑定到同一功能
标签输出页只对生产作业显示,WorkID 标签是必需配置。明确正式码值列、模板与字段来源,再验证下游识别和历史补打。
- 1生产作业必需的标签输出
- 2正式码值列
- 3匹配当前功能的模板
- 4保存标签设置
- 1
完成必需的 WorkID 标签输出
生产作业必须完成码值、模板与字段映射;不能通过关闭标签来跳过阻断。至少一个已启用的生产交接或出货功能须能用自己的 PDA 识别该码。
- 2
选择正式模板与字段
模板来自“通用标签模板”;WorkID、数量、货品等内容来自本次提交后读回的同一记录。设计器预览不能代替真实数据验证。
- 3
在手机核对打印与补打
打印机、纸张和份数在手机端核对。补打必须使用同一 WorkID、同一码类别、同一模板版本和同一标签快照;不能按今天的配置重新拼另一张标签。
- 4
保存并做打印预演
先用 Windows APP 或预览完成字段闭环;蓝牙标签机存在时,再在真机做最终打印验收。
完成结果:登记、首次打印和补打都指向同一条业务记录与标签快照。
配置专家 · 体检与启用
只在阻断项清零后启用
体检读取已保存配置,逐条说明缺口。阻断清零后还要勾选启用并保存;配置完整不能替代现场业务验证。
- 1当前阻断数量
- 2阻断项与处理入口
- 3重新体检
- 4启用或停用后须保存本页
- 1
读取当前功能状态
界面显示未配置、不完整、可启用、已停用或已启用。排障响应中的 Ready 对应已启用;“有未保存修改”则是编辑草稿状态。
- 2
逐条处理阻断项
常见问题包括未绑流程/数据环境、未声明目标列、字段来源不唯一、PDA 规则缺目标、标签输出不完整。警告可以说明风险,阻断项不能跳过。
- 3
重新体检
保存各页草稿后点重新体检,确认问题列表更新。若只有失败状态而没有具体原因,应导出排障材料反馈,不凭经验乱改。
- 4
保存启用或停用
阻断清零后勾选“启用当前移动功能”,再保存本页。停用保留绑定和配置;恢复前仍需重新体检。
完成结果:界面显示已启用,目标账号在 APP 看得到并能完成正式提交。
交付 · 验收
按一笔真实业务走完整闭环
配置保存成功不等于现场可用。每个启用功能都要用目标账号、真实候选和真实提交路径完成一次闭环。
- 1确认实例与登录对象
- 2确认服务健康
- 3确认授权与功能状态
- 4记录验收结果
- 1
固定验收对象
记录客户、账套、API 地址、移动功能、账号和工作流程,避免在多个实例间切换后拿错证据。
- 2
完成正常路径
APP 端按业务顺序选择候选、扫码或手输、提交;ERP 端核对正式记录、结存变化或只读查询结果。
- 3
完成异常与回滚路径
测试错误码、无权限、重复提交、取消返回、删除/回滚和补打。错误必须说明哪里错、影响什么、怎样改。
- 4
留下可复查交付记录
记录配置版本、验收时间、操作者、结果和仍需真机设备的项目。配置脚本只能作为某客户实施脚本,不能宣称是所有账套的标准。
完成结果:实施员能够交付,运维管理员能够接管,现场操作员能够按 APP 帮助独立完成业务。
桌面工具不可用时才使用
11 · 手工兜底参数模板
只在管理员 Windows PowerShell 5.1 中执行。所有“实际……”参数都必须由实施员从当前服务器和账套确认,不得沿用样本库名、默认实例、固定端口或固定任务名。交互 Plan 不会在交付包根目录写 JSON,只在内存中检查;只有 Apply 会保存配置并改变系统。
专用 SQL 登录
& "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy RemoteSigned -File .\Tools\Install-UpRunSqlLogin.ps1 `
-Server "<实际SQL Server实例>" `
-NetworkLibrary "<实际SQL网络库>" `
-CdbName "<实际CDB库名>" `
-SdbName "<实际SDB库名>" `
-MdbName "<实际MDB库名>" `
-LoginName "<实际专用SQL登录名>" `
-Password "<strong-password>" `
-CloudBaseUrl "<实际UpRunCloud网址>" `
-PromptPlatformLogin `
-Apply照片根目录和权限
& "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy RemoteSigned -File .\Tools\Set-UpRunPhotoRoot.ps1 `
-Server "<实际SQL Server实例>" `
-NetworkLibrary "<实际SQL网络库>" `
-CdbName "<实际CDB库名>" `
-PhotoShareRoot "\\<实际照片服务器>\<实际照片共享名>" `
-CloudBaseUrl "<实际UpRunCloud网址>" `
-PromptPlatformLogin `
-Apply
& "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy RemoteSigned -File .\Tools\Set-UpRunPhotoShareAccess.ps1 `
-ShareName "<实际照片共享名>" `
-Path "<实际照片共享绝对目录>" `
-GrantAccount "<实际API运行账号>" `
-ShareAccess <Read|Change|Full> `
-NtfsAccess <ReadAndExecute|Modify|FullControl> `
-CloudBaseUrl "<实际UpRunCloud网址>" `
-PromptPlatformLogin `
-ApplyFactory API 开机任务
& "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy RemoteSigned -File .\Tools\Install-UpRunFactoryApiTask.ps1 `
-TaskName "<实际Factory API计划任务名>" `
-TaskRegistrationPolicy "<CreateSystemHighest或ReplaceSystemHighest>" `
-InstallDir "<实际Factory API安装目录>" `
-ApiDllPath "<实际Factory API DLL绝对路径>" `
-Urls "http://0.0.0.0:<实际监听端口>" `
-Server "<实际SQL Server实例>" `
-NetworkLibrary "<实际SQL网络库>" `
-CdbName "<实际CDB库名>" `
-SdbName "<实际SDB库名>" `
-MdbName "<实际MDB库名>" `
-MaxPhotoUploadKB <正整数KB> `
-PhotoJpegQuality <1到100> `
-PhotoMaxDimension <正整数像素> `
-OpenFirewall `
-FirewallProfiles "<Domain、Private或Public>" `
-FirewallRemoteAddress "<Any、LocalSubnet、IP、CIDR或IP范围>" `
-CloudBaseUrl "<实际UpRunCloud网址>" `
-PromptPlatformLogin
& "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy RemoteSigned -File .\Tools\Uninstall-UpRunFactoryApiTask.ps1 `
-TaskName "<实际Factory API计划任务名>" `
-InstallDir "<实际Factory API安装目录>" `
-Port <实际监听端口> `
-RemoveInstallDir `
-RemoveFirewall `
-CloudBaseUrl "<实际UpRunCloud网址>" `
-PromptPlatformLogin标准包不带客户私货:任何账套专用脚本都必须与通用交付隔离;通用脚本也不得创建固定部门或路线。