Inno Setup的常用指令碼
Source: "我的程式\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "我的程式\*"; DestDir: {cf}\我的程式; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{group}\我的程式名稱"; Filename: "{app}\我的程式.exe" ;WorkingDir: "{app}"
桌面快捷方式:
[Icons]
Name: "{userdesktop}\我的程式名稱"; Filename: "{app}\我的程式.exe"; WorkingDir: "{app}"
開始選單解除安裝快捷方式:
[Icons]
Name: "{group}\{cm:UninstallProgram,我的程式}"; Filename: "{uninstallexe}"
安裝完後選擇執行:
[Run]
Filename: "{app}\我的程式.exe"; Description: "{cm:LaunchProgram,我的程式名稱}"; Flags: nowait postinstall skipifsilent
安裝完後自動執行:
[Run]
Filename: "{app}\我的程式.exe";
在介面左下角加文字:
[Messages]
BeveledLabel=你的網站名稱
選擇元件安裝:(元件1的Flags: fixed為必須安裝)
[Types]
Name: "full"; Description: "選擇安裝"; Flags: iscustom
[Components]
Name: 元件1資料夾; Description: 元件1名稱; Types: full; Flags: fixed
Name: 元件2資料夾; Description: 元件2名稱; Types: full
Name: 元件3資料夾; Description: 元件3名稱; Types: full
[Files]
Source: "E:\元件1資料夾\我的程式.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\元件1資料夾\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: 元件1資料夾
Source: "E:\元件2資料夾\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: 元件2資料夾
Source: "E:\元件3資料夾\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: 元件3資料夾
新增關於按鈕:
[Code]
{注意:關於按鈕單擊後執行的過程,一定要寫在InitializeWizard()過程之前}
procedure ButtonAboutOnClick(Sender: TObject);
begin
MsgBox('關於對話方塊。'+#13#10+'另起一行', mbInformation, MB_OK);//顯示對話方塊
end;
{初始化安裝嚮導時會觸發的過程,這個過程的名字是INNO內部定義的,不能修改}
procedure InitializeWizard();
begin
with TButton.Create(WizardForm) do//在WizardForm上面建立一個按鈕
begin
Left := 32;//按鈕距WizardForm左邊的距離
Top := 302;//按鈕距WizardForm上邊的距離
Width := WizardForm.CancelButton.Width;//按鈕的寬度,這裡定義跟'取消'按鈕等寬
Height := WizardForm.CancelButton.Height;//按鈕的高度
Caption := '關於(&A)...';//按鈕上的文字
Font.Name:='宋體';//按鈕文字的字型
Font.Size:=9;//9號字型
OnClick := @ButtonAboutOnClick;//單擊按鈕觸發的過程,就是前面的'ButtonAboutOnClick'過程,注意前面不要漏掉
Parent := WizardForm;//按鈕的父元件,也就是按鈕'載體',這裡是WizardForm(安裝嚮導窗體)
end;
end;
設定介面文字顏色:
[Code]
procedure InitializeWizard();
begin
WizardForm.WELCOMELABEL1.Font.Color:= clGreen;//設定開始安裝頁面第一段文字的顏色為綠色
WizardForm.WELCOMELABEL2.Font.Color:= clOlive;//設定開始安裝頁面第二段文字的顏色為橄欖綠
WizardForm.PAGENAMELABEL.Font.Color:= clred;//設定許可協議頁面第一段文字的顏色為紅色
WizardForm.PAGEDESCRIPTIONLABEL.Font.Color:= clBlue; //設定許可協議頁面第二段文字的顏色為藍色
WizardForm.MainPanel.Color:= clWhite;//設定窗格的顏色為白色
end;
判斷所選安裝目錄中原版主程式是否存在:
function NextButtonClick(CurPage: Integer): Boolean;
begin
Result:= true;
if CurPage=wpSelectDir then
if not FileExists(ExpandConstant('{app}\主程式.exe')) then
begin
MsgBox('安裝目錄不正確!', mbInformation, MB_OK );
Result := false;
end;
end;
顏色:
clBlack(黑色),clMaroon(暗紅),clGreen(綠色),clOlive(橄欖綠),clNavy(深藍),clPurple(紫色),clTeal(深青),clGray(灰色),clSilver(淺灰),clRed(紅色),clLime(淺綠),clYellow(黃色),clBlue(藍色),clFuchsia(紫紅),clAqua(青綠),clWhite(白色)。te(白色)。
Root: HKLM; Subkey: "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "Path"; ValueData: "{olddata};{app}";Flags:uninsdeletekey
0、呼叫DOS命令或批處理等其它命令列工具等
Exec(ExpandConstant('{cmd}'), '/c dir c:\ >a.txt',ExpandConstant('{app}'), SW_SHOWNORMAL, ewNoWait, ResultCode);
1、不顯示一些特定的安裝介面
[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpReady then
result := true;
end;
wpReady 是準備安裝介面
PageID查詢 INNO幫助中的 Pascal 指令碼: 事件函式常量
預定義嚮導頁 CurPageID 值
wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished
如果是自定義的窗體,則PageID可能是100,你可以在curPageChanged(CurPageID: Integer)方法中列印出到curpageid到底是多少。
2、獲取SQLserver安裝路徑
var
dbpath:string;
rtn:boolean;
rtn := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\MSSQLServer\Setup','SQLPath', dbpath);
if (!rtn) then dbpath := ExpandConstant('{app}');
3、獲取本機的IP地址
ip:string;
rtn:boolean;
//{083565F8-18F0-4F92-8797-9AD701FCF1BF}視網路卡而定見LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards處
rtn :=RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\{083565F8-18F0-4F92-8797-9AD701FCF1BF}\Parameters\TcpIp','IpAddress', ip);
if (not rtn) or (ip='0.0.0.0') or (ip='') then ip := '127.0.0.1';
4、檢查資料庫是否安裝
//檢查是否已安裝SQL
try
CreateOleObject('SQLDMO.SQLServer');
except
RaiseException('您還沒有安裝SQL資料庫.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
end;
5、根據環境變數選擇元件,獲取系統環境變數值見方法6
procedure CurPageChanged(CurPageID: Integer);
var
path:string;
rtn:boolean;
begin
//MsgBox(inttostr(curpageid),mbInformation,mb_ok);
if (curpageId =7) then
begin
rtn := checkTomcat6(path);
if rtn then//如果系統以前沒安裝tomcat則選中元件,否則不選中
begin
WizardForm.ComponentsList.CheckItem(2,coUnCheck);
WizardForm.ComponentsList.ItemEnabled[2] := false;
end;
end;
end;
6、系統環境變數操作
讀取:
function GetEnv(const EnvVar: String): String;
舉例:GetEnv('java_home')
設定:
[Setup]
ChangesEnvironment=true
[code]
//環境變數名、值、是否安裝(刪除)、是否所有使用者有效
procedure SetEnv(aEnvName, aEnvValue: string; aIsInstall: Boolean);//設定環境變數函式
var
sOrgValue: string;
x,len: integer;
begin
//得到以前的值
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', aEnvName, sOrgValue)
sOrgValue := Trim(sOrgValue);
begin
x := pos( Uppercase(aEnvValue),Uppercase(sOrgValue));
len := length(aEnvValue);
if aIsInstall then//是安裝還是反安裝
begin
if length(sOrgValue)>0 then aEnvValue := ';'+ aEnvValue;
if x = 0 then Insert(aEnvValue,sOrgValue,length(sOrgValue) +1);
end
else
begin
if x>0 then Delete(sOrgValue,x,len);
if length(sOrgValue)=0 then
begin
RegDeleteValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',aEnvName);
exit;
end;
end;
StringChange(sOrgValue,';;',';');
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', aEnvName, sOrgValue)
end;
end;
7、獲取NT服務安裝路徑
Windows服務在系統安裝後會在登錄檔的 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\"下
以服務的ServiceName建1個目錄,
目錄中會有"ImagePath"
舉例獲取tomcat6服務安裝路徑:
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\tomcat6','ImagePath', sPath);
------------------------------------------------------------------------
算不上原創,可也花費了很多時間心血查資料、整理、除錯
相關文章
- Inno Setup 5.22安裝指令碼示例指令碼
- (轉)Inno Setup入門(十二)——Pascal指令碼(1)指令碼
- 一個比較完整的Inno Setup 安裝指令碼指令碼
- Inno Setup 打包工具總結(轉)
- 常用指令碼指令碼
- inno setup打包多個exe、msi 自動檢測.net framework並安裝Framework
- SQLServer 常用指令碼SQLServer指令碼
- MySQL 常用指令碼MySql指令碼
- dba常用指令碼指令碼
- 常用指令碼-02指令碼
- 常用shell指令碼指令碼
- 常用的Oracle指令碼參考Oracle指令碼
- 常用的幾個典型指令碼指令碼
- linux常用的shell指令碼Linux指令碼
- Bash 常用指令碼片段指令碼
- python 常用指令碼Python指令碼
- 常用指令碼學習手冊——Bat指令碼指令碼BAT
- 用exe4j和inno setup將JAVA的專案打包為跨平臺安裝包Java
- js- 常用指令碼程式碼JS指令碼
- MHA常用指令碼簡介指令碼
- sqlmap常用繞過指令碼SQL指令碼
- RMAN常用備份指令碼指令碼
- ORACLE常用SQL指令碼2OracleSQL指令碼
- 【Ubuntu】Ubuntu常用的更新、清理命令指令碼Ubuntu指令碼
- shell之最常用的服務指令碼指令碼
- 常用的主機監控shell指令碼指令碼
- 最常用的資料庫命令,指令碼資料庫指令碼
- ORACLE一些不常用的指令碼Oracle指令碼
- 【管理】Oracle 常用的V$ 檢視指令碼Oracle指令碼
- bat批處理常用指令碼BAT指令碼
- linux 常用Mysql指令碼命令LinuxMySql指令碼
- Oracle DBA常用監控指令碼Oracle指令碼
- 常用指令碼命令集(轉)指令碼
- shell常用指令碼&crontab設定指令碼
- Inno Setup打包的安裝程式在Vista/Win7上自動提示需要管理員許可權的方法Win7
- 【轉】shell指令碼處理字串的常用方法指令碼字串
- 我常用的主機監控Shell指令碼指令碼
- 常用的方便指令