Inno Setup 制作jar转EXE文件的安装包 之权限、图标、卸载菜单的问题
2016-07-08 00:00
381 查看
·怎么给在开始菜单中增加卸载快捷方式?
在相应节点下,添加以下代码
**·怎么自定义卸载图标? **
(例中卸载图标名字为:uninstallico.ico)
下载一个UpdateIcon.dll放在同一个文件夹下
(JAR、脚本、图标、这个DLL等相关文件都放同一文件夹下)
完了之后,如果你发现图标还是没变,这可能是WINDOWS缓存的问题,你把卸载文件放到别的文件夹下看看,如果图标变了的话,那就说明替换成功。因为这个BUG,没少浪费我时间……
·怎么让程序在启动的时候自动请求管理员权限呢?
使用ResHacker工具修改文件信息
用工具打开你要请求管理员的exe文件,使用搜索功能,查找“requestedExecutionLevel”
把asInvoker 改成requireAdministrator,之后点击编译脚本即可。
重新打开这个exe文件,如果你发现刚才的值变成了requireAdministrator的话,那就说明更改成功。
如果这时候,运行程序还是会提示权限不足,或者没有任何反应的话,就是不提示请求权限的话。
那么这很可能是电脑本地安全策略的设置问题。
在开始栏搜索 本地安全策略,打开它(家庭版的系统好像没有这个功能)
选择本地策略-安全选项,将用户账户控制那几个选项,改得和我一样,重启后再试试。
一般在这样修改之后,程序就能自动请求权限。
再补充一些技巧:
**怎么取消安装后的运行选项? **
(删除脚本中的[run]代码块即可)
怎么默认勾选创建桌面图标
删除 桌面图标代码后的 flags即可
在相应节点下,添加以下代码
[Setup] Uninstallable=yes UninstallDisplayName=卸载快捷方式的名字 [Icon] Name: "{group}\卸载快捷方式的名字"; Filename: "{uninstallexe}"
**·怎么自定义卸载图标? **
(例中卸载图标名字为:uninstallico.ico)
下载一个UpdateIcon.dll放在同一个文件夹下
(JAR、脚本、图标、这个DLL等相关文件都放同一文件夹下)
[Files] ;卸载图标位置 Source: "D:\xx\uninstallico.ico"; Flags: solidbreak dontcopy ;卸载插件位置 Source: "D:\xxx\UpdateIcon.dll"; Flags: solidbreak dontcopy [code] //插件函数用法 //参数: 句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称, 图标文件的完整路径名称, (exe中要替换的图标资源所在)语系 //返回值: 成功 = True, 失败 = False function UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean; external 'UpdateIcon@files:UpdateIcon.dll stdcall'; //替换卸载程序的图标 function UpdateUninstIcon(const IcoFileName: String): Boolean; begin // 要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!其它参数类似! Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0); //替换卸载图标 end; procedure CurStepChanged(CurStep: TSetupStep); var sIcon: String; begin //注意: 替换卸载程序的图标,必须是在卸载程序生成之前! //建议安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错! if CurStep=ssInstall then begin sIcon:= ExpandConstant('{tmp}\uninstallico.ico'); //定义卸载图标 // ExtractTemporaryFile('UpdateIcon.dll'); ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标 // 要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标! if UpdateUninstIcon(sIcon) then //替换卸载图标 // MsgBox('卸载程序图标 替换成功!', mbInformation, MB_OK) // else MsgBox('卸载程序图标 替换失败!', mbError, MB_OK); end; end;
完了之后,如果你发现图标还是没变,这可能是WINDOWS缓存的问题,你把卸载文件放到别的文件夹下看看,如果图标变了的话,那就说明替换成功。因为这个BUG,没少浪费我时间……
·怎么让程序在启动的时候自动请求管理员权限呢?
使用ResHacker工具修改文件信息
用工具打开你要请求管理员的exe文件,使用搜索功能,查找“requestedExecutionLevel”
把asInvoker 改成requireAdministrator,之后点击编译脚本即可。
重新打开这个exe文件,如果你发现刚才的值变成了requireAdministrator的话,那就说明更改成功。
如果这时候,运行程序还是会提示权限不足,或者没有任何反应的话,就是不提示请求权限的话。
那么这很可能是电脑本地安全策略的设置问题。
在开始栏搜索 本地安全策略,打开它(家庭版的系统好像没有这个功能)
选择本地策略-安全选项,将用户账户控制那几个选项,改得和我一样,重启后再试试。
一般在这样修改之后,程序就能自动请求权限。
再补充一些技巧:
**怎么取消安装后的运行选项? **
(删除脚本中的[run]代码块即可)
怎么默认勾选创建桌面图标
删除 桌面图标代码后的 flags即可
[Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
相关文章推荐
- 打开sql server jdbc的日志功能的方法
- Java 连接sql server
- SQL server jdbc之prelogin数据包
- prelogin数据包之response包
- svn的原理和使用
- iOS第三方网络诊断库——LDNetDiagnoService
- E - Pyramid of Glasses
- 利用css3 transform优雅实现元素定位在屏幕正中央
- EF工作中踩过的坑.
- 终于落脚了!
- 如何使用canvas画连续的线段
- Vue.js学习 Item5 -- 计算属性computed与$watch
- D - Joty and Chocolate
- using
- 关于微信的第三方登录
- Windows平板装Android双系统及建立UEFI引导全攻略(windows8.1+android6+phoenix)
- 如何执行JavaScript文件
- C - Alyona and Mex CF682B
- java格式化sql
- 中关村,你到底想闹成哪样?