You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NSIS卸载器自定义组件/COMPONENTSONLYONCUSTOM参数使用问题求助

NSIS卸载端仅自定义模式显示组件的解决方法

你的核心问题是卸载端的InstType定义逻辑错误:重复定义了同一个卸载类型,且没有给自定义卸载类型单独绑定/COMPONENTSONLYONCUSTOM参数。以下是修正方案:

错误原因

  1. 你重复定义了un.$(instType)这个卸载InstType(先定义无参数版本,再定义带参数版本),NSIS无法识别这种冲突设置,导致参数失效。
  2. /COMPONENTSONLYONCUSTOM参数的作用是标记某一个特定的安装/卸载类型,只有选中该类型时才显示组件列表。你需要给卸载端单独定义一个“自定义”类型,而非给默认类型加参数。

修正后的代码

LangString instType ${LANG_ENGLISH} "Default"
LangString customInstType ${LANG_ENGLISH} "Custom"

; 安装端类型定义
InstType $(instType)  ; 默认安装:不显示组件
InstType /COMPONENTSONLYONCUSTOM $(customInstType)  ; 自定义安装:仅选此类型时显示组件

; 卸载端类型定义
InstType un.$(instType)  ; 默认卸载:不显示组件
InstType /COMPONENTSONLYONCUSTOM un.$(customInstType)  ; 自定义卸载:仅选此类型时显示组件

; 安装流程页面
Page components
Page instfiles

; 卸载流程页面
UninstPage components
UninstPage instfiles

; 卸载初始化:设置默认选中卸载的默认类型
Function un.onInit
  InstTypeSetDefault un.$(instType)
FunctionEnd

关键说明

  • 卸载端的InstType必须以un.前缀开头,和安装类型做区分。
  • 给卸载的自定义类型单独添加/COMPONENTSONLYONCUSTOM参数,这样只有用户切换到该类型时,卸载组件页面才会显示。
  • 通过InstTypeSetDefault在卸载初始化时设置默认选中的卸载类型,确保启动卸载程序时默认不显示组件列表。

内容的提问来源于stack exchange,提问作者Eikao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:07:12