display_res_icon.h

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #define IDM_EXIT           100
#define IDM_TEST           200
#define IDM_ABOUT          301

LRESULT CALLBACK WndProc  (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About    (HWND, UINT, WPARAM, LPARAM);

# ====================== 自定义宏 产品信息============================== !define PRODUCT_NAME "BotAgent" !define PRODUCT_PATHNAME "WillingBotAgent_PC" #安装卸载项用到的KEY !define INSTALL_APPEND_PATH "WillingBotAgent" #安装路径追加的名称 !define INSTALL_DEFALT_SETUPPATH "" #默认生成的安装路径 !define EXE_NAME "WillingBotAgent.exe" !define PRODUCT_VERSION "4.0.0.0" !define PRODUCT_PUBLISHER "武汉慧灵控科技有限公司" !define PRODUCT_LEGAL "武汉慧灵控科技有限公司 Copyright(c)2017" !define INSTALL_OUTPUT_NAME "Test.exe" # ====================== 自定义宏 安装信息============================== !define INSTALL_7Z_PATH "..\app.7z" !define INSTALL_7Z_NAME "app.7z" !define INSTALL_RES_PATH "skin.zip" !define INSTALL_LICENCE_FILENAME "licence.rtf" !define INSTALL_ICO "logo.ico" !define UNINSTALL_ICO "uninst.ico" #SetCompressor lzma !include "ui_nim_setup.nsh" # ==================== NSIS属性 ================================ # 针对Vista和win7 的UAC进行权限请求. # RequestExecutionLevel none|user|highest|admin RequestExecutionLevel admin ; 安装包名字. Name "${PRODUCT_NAME}" # 安装程序文件名. OutFile "..\..\Output\${INSTALL_OUTPUT_NAME}" ;$PROGRAMFILES32\Netease\NIM\ InstallDir "$PROGRAMFILES64" # uncomment the following line to make the installer silent by default. ;SilentInstall normal # 安装和卸载程序图标 Icon "${INSTALL_ICO}" UninstallIcon "${UNINSTALL_ICO}" 这段代码如何修改,能让安装包在传入/S命令的时候静默安装,不传/S的时候正常安装
最新发布
03-14
<think>好的,我现在要帮助用户解决他们的NSIS安装包静默安装的问题。用户提供了他们的NSIS脚本片段,并希望当传入/S参数时静默安装,否则正常安装。我需要仔细分析他们的代码,找出哪里需要修改,并确保解决方案符合NSIS的最佳实践。 首先,用户已经定义了一些产品信息和安装路径的宏,这部分看起来没问题。接下来,他们包含了"ui_nim_setup.nsh",这可能是一个自定义的UI文件,可能会影响静默安装的兼容性。我需要考虑如何处理静默模式下的UI。 用户当前的脚本中没有明显的处理静默模式的代码。根据之前的建议,他们需要在.onInit函数中检测/S参数,并设置SetSilent silent。同时,可能需要使用MUI2的静默模式支持。 我注意到用户没有包含MUI2头文件,这可能是一个问题。因为如果他们使用传统的MUI,可能需要显式处理静默模式的UI切换。或者,他们可能使用了自定义的UI界面,这可能在静默模式下不兼容,导致安装界面仍然弹出。 另外,用户当前的RequestExecutionLevel设置为admin,这正确,但需要确认在静默模式下是否以管理员权限运行,可能需要使用SilentInstall或处理UAC。 可能的解决方案步骤: 1..onInit函数中检测/S参数,设置SetSilent silent。 2. 确保安装脚本中没有在静默模式下弹出对话框的代码,比如MessageBox。 3. 检查是否使用了兼容静默模式的UI,可能需要使用MUI2并设置适当的静默模式配置。 4. 添加SilentInstall指令,确保静默安装时不显示任何窗口。 5. 测试不同参数下的安装行为,确保正常安装时有界面,静默安装时无界面且自动完成。 需要检查用户是否在脚本中有任何与用户交互相关的代码,比如自定义页面或消息框,这些在静默模式下需要被跳过。此外,确保静默安装时安装路径正确,不会因为用户未选择而使用默认路径。 可能需要用户调整他们的UI配置,使用MUI2提供的静默模式支持,或者确保他们的自定义UI在静默模式下被正确隐藏。同时,处理静默模式下的安装路径设置,可能需要强制使用默认路径,避免交互选择。 最后,验证修改后的脚本,确保传入/S时静默安装,不传时正常显示界面,并且所有安装步骤正确执行。</think>根据您的需求,可以通过以下修改实现`/S`参数控制静默安装与正常安装的切换: --- ### **关键修改点** ```nsis # ==================== 新增代码 ======================== # 包含静默模式支持库 !include "LogicLib.nsh" # 用于条件判断 !include "FileFunc.nsh" # 用于参数解析 # 初始化时检测/S参数 Function .onInit # 解析命令行参数 ${GetParameters} $R0 ${GetOptions} $R0 "/S" $R1 # 判断是否找到/S参数 IfErrors not_silent 0 SetSilent silent # 静默模式 StrCpy $INSTDIR "$PROGRAMFILES64\${INSTALL_APPEND_PATH}" # 强制使用默认路径 Goto end_check not_silent: SetSilent normal # 正常模式 end_check: # 初始化安装路径(仅在非静默模式显示选择界面) ${If} ${Silent} # 静默模式下直接使用预设路径 StrCpy $INSTDIR "$PROGRAMFILES64\${INSTALL_APPEND_PATH}" ${Else} # 正常模式下显示路径选择界面 !insertmacro MUI_PAGE_DIRECTORY ${EndIf} FunctionEnd # ==================== 原代码修改 ====================== # 在Section区块前添加静默模式兼容逻辑 Section "安装主程序" ${If} ${Silent} DetailPrint "静默安装模式中..." # 静默模式下仍可记录日志 ${Else} # 正常模式下的交互代码(如进度条、提示等) !insertmacro MUI_INSTALLOPTIONS_DISPLAY ${EndIf} # 以下是您的实际安装操作 SetOutPath "$INSTDIR" File /r "${INSTALL_7Z_PATH}" # 其他安装步骤... SectionEnd ``` --- ### **修改说明** 1. **参数检测逻辑** 在`.onInit`函数中: - 使用`${GetParameters}`和`${GetOptions}`检测`/S`参数 - 找到`/S`时: - `SetSilent silent`:启用静默模式 - `StrCpy $INSTDIR`:强制使用默认安装路径(避免弹出路径选择界面) - 未找到`/S`时: - `SetSilent normal`:正常显示安装界面 - 保留`MUI_PAGE_DIRECTORY`目录选择页面 2. **路径处理优化** ```nsis StrCpy $INSTDIR "$PROGRAMFILES64\${INSTALL_APPEND_PATH}" ``` 静默模式下强制使用预设路径,避免因未弹出路径选择界面导致`$INSTDIR`为空。 3. **UI兼容性修改** ```nsis ${If} ${Silent} # 静默模式逻辑 ${Else} # 正常模式UI显示 !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES ${EndIf} ``` 使用条件判断包裹所有UI相关宏,确保静默模式下不加载界面元素。 4. **Section代码调整** ```nsis ${If} ${Silent} DetailPrint "静默安装模式中..." # 静默模式下仍可记录日志 ${Else} # 正常模式下的交互代码 !insertmacro MUI_INSTALLOPTIONS_DISPLAY ${EndIf} ``` 区分静默/正常模式的操作,确保静默安装时不触发交互。 --- ### **完整修改示例** 在您原有脚本基础上添加以下内容: ```nsis # ==================== 头文件包含 ====================== !include "LogicLib.nsh" !include "FileFunc.nsh" !insertmacro GetParameters !insertmacro GetOptions # ==================== 初始化函数 ====================== Function .onInit # 参数检测 ${GetParameters} $R0 ${GetOptions} $R0 "/S" $R1 # 设置静默模式 IfErrors not_silent 0 SetSilent silent StrCpy $INSTDIR "$PROGRAMFILES64\${INSTALL_APPEND_PATH}" Goto end_init not_silent: SetSilent normal end_init: FunctionEnd # ==================== 页面控制 ======================== !insertmacro MUI_PAGE_WELCOME ${IfNot} ${Silent} !insertmacro MUI_PAGE_DIRECTORY # 仅非静默模式显示路径选择 ${EndIf} !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ``` --- ### **验证方法** 1. **正常安装** ```bash Test.exe ``` 应显示完整的安装界面和路径选择。 2. **静默安装** ```bash Test.exe /S ``` 应无任何界面,自动安装到默认路径`Program Files64\WillingBotAgent` 3. **日志验证** ```bash Test.exe /S /LOG="C:\install.log" ``` 检查日志中是否有`静默安装模式中...`的提示。 --- ### **注意事项** 1. **静默模式限制** 确保以下内容不会在静默模式下执行: - `MessageBox`弹窗 - 用户输入请求 - 路径选择交互 2. **权限要求** 如果安装到`Program Files`目录,建议保留: ```nsis RequestExecutionLevel admin ``` 3. **7z解压兼容性** 如果使用`File /r "${INSTALL_7Z_PATH}"`解压7z文件,建议改用`nsUnzip`插件或`ExecWait`调用外部解压工具,确保静默模式下无进度条卡住。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值