1、如何让协议许可页面默认选中我同意按钮
[code]
procedure InitializeWizard();
begin
WizardForm.LICENSEACCEPTEDRADIO.Checked := true;
end;
2、如何隐藏安装界面右上角小图标
[code]
procedure InitializeWizard();
begin
wizardForm.WizardSmallBitmapImage.width:=0 //将宽度设为0
end;
3、安装时如何判断程序是否在运行中
function InitializeSetup(): Boolean;
begin
result := true;
if CheckForMutexes({#MyAppName}) then //程序需要创建互斥体,{#MyAppName}需要与程序互斥体一致
begin
MsgBox('程序正在运行,请先关闭程序后再重试! ', mbError, MB_OK);
result:=false;
end;
end;
4、卸载时如何判断程序是否在运行中
function InitializeUninstall(): Boolean;
begin
Result :=true;
if CheckForMutexes('{#MyAppName}') then //程序需要创建互斥体,{#MyAppName}需要与程序互斥体一致
begin
MsgBox(ExpandConstant('程序正在运行,请先关闭程序后再重试!'), mbError, MB_OK);
result:=false;
end;
end;
5、安装和卸载时,如何实现多语言功能
[Languages]
//指定语言文件
Name: "cn"; MessagesFile: "compiler:Languages\ChineseSimplified.isl" ;
Name: "en"; MessagesFile: "compiler:Languages\Default.isl";
[CustomMessages]
//设置中文语言
cn.OverwriteInstallationTips=您已安装过该软件,是否要自动卸载后重装?
//设置英文语言
en.OverwriteInstallationTips=You have already installed the software, %ndo you want to automatically uninstall and reinstall it?
[code]
function InitializeSetup(): Boolean;
var
ResultStr: String;
ResultCode: Integer;
//安装时判断程序是否已安装
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{368CF051-4CFE-47C6-868C-F9F962434378}_is1', 'UninstallString', ResultStr) then
begin
if MsgBox('{cm:OverwriteInstallationTips}', mbConfirmation, MB_YESNO) = IDYES then //使用cm:OverwriteInstallationTips引用设置的语言内容
begin
ResultStr := RemoveQuotes(ResultStr);
Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode)
end
else begin
result:=true;
Abort()
end;
end;
result := true;
end;
end;
6、如何获取已安装程序版本号
//定义获取版本号函数,使用RegQueryStringValue获取版本号
function GetInstalledVersion(AppId: String): String; //参数为程序APPID,返回值为版本号
begin
RegQueryStringValue(HKLM64, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+ AppId + '_is1','DisplayVersion', Result);
end;
7、如何将版本号转换成可比较的数据
//定义函数,获取版本号x.x.x.x第一个数字
function GetFirstVersionNumber(const VersionStr: String): Integer;
var
TempStr: String;
begin
TempStr := VersionStr;
// 将第一个点号之后的内容替换为空
if StringChangeEx(TempStr, '.', #0, True) > 0 then
TempStr := Copy(TempStr, 1, Pos(#0, TempStr) - 1);
Result := StrToIntDef(TempStr, 0);
end;
8、如何在安装完成后默认不勾选“运行程序”之类的选项
[Run]
//默认情况下,"运行我的程序" 这个复选框是勾选的。如果我们想要默认不勾选,可以添加 `unchecked` 标志。
Filename: "{app}\myprogram.exe"; Description: "运行我的程序"; Flags: postinstall nowait skipifsilent unchecked
//postinstall 表示这个运行条目将显示在完成页面的复选框。
//nowait 表示安装程序不会等待该程序结束(立即继续)。
//skipifsilent 表示在静默安装时跳过这个运行条目。
//unchecked 表示不勾选复选框。
9、如何将默认安装位置设置在64位目录C:\Program Files下
[Setup]
DefaultDirName={autopf}\{#MyAppName}_v{#MyAppVersion}
ArchitecturesInstallIn64BitMode=x64 ia64
