【问题标题】:NSIS - Disable "Uninstall" button if no component is selectedNSIS - 如果未选择任何组件,则禁用“卸载”按钮
【发布时间】:2014-11-02 14:42:06
【问题描述】:

我有一个 NSIS 脚本,其中包含两个要卸载的组件。如果用户在“选择组件”页面中取消选中这两个组件,卸载按钮仍然处于活动状态,并且卸载过程可以继续进行,而无需实际卸载任何东西。如果没有选择任何组件,是否有任何简单的方法可以禁用“卸载”按钮? 选择卸载程序部分的代码如下:

# Macro for selecting uninstaller sections
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
    Push $R0
    ReadRegStr $R0 HKLM "${REGKEY}\Components" "${SECTION_NAME}"
    StrCmp $R0 1 0 next${UNSECTION_ID}
    !insertmacro SelectSection "${UNSECTION_ID}"
    GoTo done${UNSECTION_ID}
next${UNSECTION_ID}:
    !insertmacro UnselectSection "${UNSECTION_ID}"
done${UNSECTION_ID}:
    Pop $R0
!macroend

提前致谢!

【问题讨论】:

    标签: installation nsis uninstallation


    【解决方案1】:
    UninstPage Components un.InitComponents
    UninstPage InstFiles
    
    Section "un.Foo" SID_FOO
    SectionEnd
    Section /o "un.Bar" SID_BAR
    SectionEnd
    
    !include LogicLib.nsh
    
    Function un.InitComponents
    ;!insertmacro SELECT_UNSECTION SECTION_NAME ...
    Call un.onSelChange ; Make sure the initial button state is correct
    FunctionEnd
    
    Function un.onSelChange
    GetDlgItem $1 $hwndParent 1
    ${If} ${SectionIsSelected} ${SID_FOO}
    ${OrIf} ${SectionIsSelected} ${SID_BAR}
        EnableWindow $1 1
    ${Else}
        EnableWindow $1 0
    ${EndIf}
    FunctionEnd
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多