您的位置:首页 > 其它

Inno Setup 制作jar转EXE文件的安装包 之权限、图标、卸载菜单的问题

2016-07-08 00:00 381 查看
·怎么给在开始菜单中增加卸载快捷方式?

在相应节点下,添加以下代码

[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}"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: