天晴动作工具组文档 天晴动作工具组文档
首页
内网站 (opens new window)
天晴盒子
脚本文档
开发公约
  • MAXScript2020 Help (opens new window)
  • 3dsmax-2023-MAXScript Help (opens new window)
  • 3dsmax-2023-Max-Python Help (opens new window)
  • DeveloperSDK2023 Help (opens new window)
教程
更新
关于
登录/注册 (opens new window)
  • 动画重定向
  • 3ds Max 文件降版本
  • GIF播放器
  • 表情绑定助手
  • MAXtoUnrealTools
  • MMD4Max
  • AnimFiltersMax2021
  • 分类
  • 标签
  • 归档
首页
内网站 (opens new window)
天晴盒子
脚本文档
开发公约
  • MAXScript2020 Help (opens new window)
  • 3dsmax-2023-MAXScript Help (opens new window)
  • 3dsmax-2023-Max-Python Help (opens new window)
  • DeveloperSDK2023 Help (opens new window)
教程
更新
关于
登录/注册 (opens new window)
  • 动画重定向
  • 3ds Max 文件降版本
  • GIF播放器
  • 表情绑定助手
  • MAXtoUnrealTools
  • MMD4Max
  • AnimFiltersMax2021
  • 分类
  • 标签
  • 归档
  • CATRig

  • NetSDK(C#)动画曲线插件课程
  • skinRig

  • comfy-ui

  • FBXMetaData
  • Engine

  • MaxPython_Msx

  • motionbuilder

  • Ai

  • superman

  • web

    • ClickOnce 应用通过 Nginx 内网发布
      • 目标与访问方式
      • 目录结构(多应用)
      • Visual Studio 发布设置
      • Nginx 配置说明
        • 要点:
      • URL 与磁盘路径对应关系
      • 验证
      • 新增第二个应用 checklist
      • 参考
  • RigNet自动绑定角色-AI- 部署测试
  • MotoricaAI-MoGen 动画合成
  • 3dsMax与Spine互导工具
  • EasyMocap视频动捕部署测试
  • FreeMocap无标记视频动捕部署
  • RootMotion和InPlace动画差异
  • 虚幻物理资产导出XML
  • 关闭骨骼移动带转父级的特性
  • 简易Biped绑定框架方案
  • 关于蒙皮权重镜像匹配问题介绍以及解决方案
  • GVHMR视频动捕部署
  • UniRig自动骨骼蒙皮部署
  • 从AI视频跟踪到2D骨骼动画制作
  • PC资源转口袋资源流程
  • 教程
  • web
Joe
2026-05-21
目录

ClickOnce 应用通过 Nginx 内网发布

# ClickOnce 应用通过 Nginx 内网发布

本文记录如何在 anim.nd.com.cn 上,用 Nginx 静态目录 + Visual Studio ClickOnce 发布多个 Windows 桌面工具(以 MY-C3S3-GUID-Tools 为例),供内网用户一键安装与自动更新。

http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application (opens new window)

image


# 目标与访问方式

项 示例
安装入口 ​http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application
服务器目录 ​/home/nd/DownloadFile/Tools/publish-app/{应用名}/
Nginx 配置 ​svn-anim_-lib/nginx/conf/nginx_flask.conf

# 目录结构(多应用)

​publish-app​ 下每个应用独占一个子文件夹,避免 Application Files 等资源路径冲突:

/home/nd/DownloadFile/Tools/publish-app/
├── MY-C3S3-GUID-Tools/
│   ├── MY-C3S3-GUID-Tools.application    # 部署清单(入口)
│   ├── MY-C3S3-GUID-Tools.application.manifest
│   ├── setup.exe                          # 可选,网页安装引导
│   ├── Publish.html
│   └── Application Files/
│       └── MY-C3S3-GUID-Tools_1_0_0_x/
│           ├── MY-C3S3-GUID-Tools.exe.deploy
│           └── ...
└── AnotherTool/                           # 其它应用同理
    └── AnotherTool.application
1
2
3
4
5
6
7
8
9
10
11
12

# Visual Studio 发布设置

在 项目属性 → 发布 (Publish) 中:

设置项 正确示例 常见错误
发布位置 本机输出目录,再复制到服务器 publish-app/MY-C3S3-GUID-Tools/ —
安装文件夹 URL ​http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/ 写成 .../app/​ 或带 .application 的完整文件路径
安装 URL ​http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application 与安装文件夹 URL 重复拼接文件名

‍

发布完成后,在服务器上检查清单:

grep deploymentProvider \
  /home/nd/DownloadFile/Tools/publish-app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application
1
2

​codebase​ 应为(仅一个 .application):

<deploymentProvider codebase="http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application" />
1

PureRef-copy-2026.05.21-16.04.38PureRef-copy-2026.05.21-16.04.47

PureRef-copy-2026.05.21-16.04.52

PureRef-copy-2026.05.21-16.04.58

PureRef-copy-2026.05.21-16.05.02


# Nginx 配置说明

在 nginx_flask.conf​ 的 server​ 块中,location /​(VuePress)之前增加:

# ClickOnce 多应用根目录
location ^~ /app/ {
    alias /home/nd/DownloadFile/Tools/publish-app/;

    # 兼容:/app/Foo.application → /app/Foo/Foo.application
    rewrite ^/app/([^/]+)\.application$ /app/$1/$1.application last;

    autoindex off;

    types {
        application/x-ms-application    application;
        application/x-ms-manifest       manifest;
        application/octet-stream          deploy;
    }
    default_type application/octet-stream;

    if ($uri ~* \.(application|manifest)$) {
        add_header Cache-Control "no-cache, no-store, must-revalidate";
        expires -1;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 要点:

  1. ​ ​^~ /app/​ ​:优先于根路径 location /,避免被 VuePress 抢走。
  2. ​​alias​​ 末尾必须有 ​/​ ​,且指向 publish-app/ 而非单个应用目录。
  3. MIME 类型:缺省会把 .application 当成普通文件,ClickOnce 无法安装。
  4. 清单不缓存:便于客户端检测更新。
  5. ​​rewrite ... last​:支持书签/旧文档中的扁平 URL。

修改后重载:

sudo nginx -t && sudo nginx -s reload
1

# URL 与磁盘路径对应关系

请求 URL 磁盘文件
​/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application ​publish-app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application
​/app/MY-C3S3-GUID-Tools/Application%20Files/... ​publish-app/MY-C3S3-GUID-Tools/Application Files/...

# 验证

# 文件是否存在
ls /home/nd/DownloadFile/Tools/publish-app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application

# HTTP 与 Content-Type
curl -I "http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application"
# 期望:HTTP/1.1 200,Content-Type: application/x-ms-application

# 兼容扁平链接
curl -I "http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools.application"
# 期望:200(经 rewrite 后同样返回 application 类型)
1
2
3
4
5
6
7
8
9
10

Windows 客户端测试:

rundll32 dfshim.dll,ShOpenVerbApplication http://anim.nd.com.cn/app/MY-C3S3-GUID-Tools/MY-C3S3-GUID-Tools.application
1

或在浏览器直接打开上述 .application 链接。


# 新增第二个应用 checklist

  1. Visual Studio 发布到 publish-app/AnotherTool/。
  2. 安装文件夹 URL:http://anim.nd.com.cn/app/AnotherTool/。
  3. 确认 deploymentProvider​ 指向
    ​http://anim.nd.com.cn/app/AnotherTool/AnotherTool.application。
  4. 无需改 Nginx(已指向 publish-app/ 根目录)。
  5. 分发链接:
    ​http://anim.nd.com.cn/app/AnotherTool/AnotherTool.application。

# 参考

  • ClickOnce 安全与部署 (opens new window)
  • Nginx alias 与 rewrite (opens new window)

‍

捏脸
RigNet自动绑定角色-AI- 部署测试

← 捏脸 RigNet自动绑定角色-AI- 部署测试→

最近更新
01
简体魔域 GUID 检查工具
05-21
02
RBF 解算器使用说明
05-08
03
ComfyUI节点上传文件后立即加载失败排障实录
04-28
更多文章>
Theme by Vdoing | Copyright © 2019-2026 ND|99u:199505| 鄂ICP备2022012500号 | 鄂公网安备 42022202000122号

共产主义:是对生产资料的共享,不是对生活资料财产的均分

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式