1. 程式人生 > >Inno setup自定義視窗動態修改配置引數

Inno setup自定義視窗動態修改配置引數

目標:靜默安裝軟體,動態配置引數

初次使用inno setup ,完全不瞭解pascal語言,網上找了很多資料,很多也很零散,總結整理下,方便大家使用

第一步:按引導建立指令碼,這部分就不描述了

; Script generated by the Inno Setup Script Wizard.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!


#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "setup.exe"


[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{A026898B-6C4E-41FA-8F26-9067D95C6BE0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes


[Languages]
Name: english; MessagesFile: compiler:Default.isl


[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked


[Files]
Source: C:\Submetering\setup.exe; DestDir: {app}; Flags: ignoreversion
Source: C:\Submetering\uninstall\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files


[Icons]
Name: {commonprograms}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon


[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifsilent

第二步:建立自定義視窗

[Code]
var
myPage:TwizardPage;//定義視窗
ed1:TEdit;//定義輸入框

Lbl1: TNewStaticText;//標題

//定義校驗方法,校驗失敗時,下一步按鈕為空

procedure Key_Form_KeyChange(Sender: TObject);
begin
if(length(ed1.Text) <= 6) then
        WizardForm.NextButton.Enabled := True
    else
WizardForm.NextButton.Enabled := False;

end;

//初始化引導 視窗

procedure InitializeWizard();
begin
myPage:=CreateCustomPage(wpWelcome, '標題:標題', '描述:描述');
Lbl1 := TNewStaticText.Create(myPage);
Lbl1.Left := ScaleX(5);
Lbl1.Top := ScaleY(5);
Lbl1.Width := ScaleX(250);
Lbl1.Height := ScaleY(50);
Lbl1.Caption := '輸入框標題';
Lbl1.Parent := myPage.Surface;
ed1:=TEdit.Create(myPage);
ed1.Width:=ScaleX(410);
ed1.Top := ScaleY(25);
ed1.Text :='999910';
ed1.Parent:=myPage.Surface;
ed1.OnChange := @Key_Form_KeyChange;//新增校驗方法

end;

//新增步驟

procedure CurStepChanged(CurStep: TSetupStep);
var
    fileName,tempStr:String;
    svArray: TArrayOfString;
    nLines,i:Integer;

begin

if CurStep=ssinstall then
//安裝前執行

       if CurStep=ssPostinstall then

//複製檔案後執行

            begin

//開始修改檔案

fileName := ExpandConstant('{app}\檔名');
LoadStringsFromFile(fileName, svArray);
nLines := GetArrayLength(svArray);//讀取檔案
  for i := 0 to nLines - 1 do
  begin
tempStr := svArray[i];
if (1 = Pos('查詢內容', tempStr)) then//查詢目標行
begin
  svArray[i] := ExpandConstant('修改內容'+ed1.Text);//修改行
  StringChangeEx(svArray[i], '\', '/', True);
end;
  end;
  SaveStringsToFile(fileName, svArray, false);

end;

if CurStep=ssDone then

//安裝完成後執行

end;

相關推薦

Inno setup定義視窗動態修改配置引數

目標:靜默安裝軟體,動態配置引數 初次使用inno setup ,完全不瞭解pascal語言,網上找了很多資料,很多也很零散,總結整理下,方便大家使用 第一步:按引導建立指令碼,這部分就不描述了 ; Script generated by the Inno Setup Sc

Android 動態修改定義drawable圓角,修改邊線及填充色

最近專案中遇到這樣一個要求,自定義的圓角按鈕,要根據後臺返回的顏色進行自定義顏色修改和邊框修改 這個是我自定xml定義的一個帶圓角邊框的背景 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:andro

VS2017 Linux C++引用定義動態

++ -1 undefined mage 編譯運行 linux下 lin 套路 log 前一篇博客講了用系統庫libpthread.so的例子,只需要在項目屬性頁的[C++->命令行參數]和[鏈接器->命令行參數]中加上對應參數(比如-pthread)即可,然後

Linux監控(添加定義監控項,配置郵件告警)

map alt 服務端 網上 send rep pad ima 觸發 一、添加自定義監控項需求:監控某臺web的80端口連接數,並出圖。步驟:1):zabbix監控中心創建監控項目2):針對該監控項目以圖形展現第一步(需要到客戶端定義腳本)[root@zhuji ~]# v

如何做到在webpack打包vue項目後,在外部動態修改配置文件

打包 測試 contex 我們 pro nbsp assets bpa gen 在我們做完vue項目後,只需要執行 npm run dist 就可以輕松進行打包轉測試,可是如果我們臨時需要修改一些配置文件比如域名,這時候我們就有點懵逼了,那就修改了再重新打一次包? NO N

gradle 定義插件 下載配置文件

con classpath roo user div ase 字符串 rip end 1.新建Gradle項目: 2.建立src/main/groovy目錄,並添加如下代碼: ConfigPlugin.groovypackage com.wemall.config i

zabbix定義監控腳本配置

web配置 創建 服務器 con 進入 src ram 報警郵件 51cto 實驗環境 環境 IP 服務端 192.168.24.168 客戶端 192.168.24.188 實驗條件: zabbix監控服務器、客戶端都已經部署完成,被監控主機已添加

spring定時任務.線程池,定義多線程配置

sys wire eight void port itl edm 代碼 .org 定時任務及多線程配置xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfr

Flume NG原始碼分析(二)支援執行時動態修改配置配置模組

在上一篇中講了Flume NG配置模組基本的介面的類,PropertiesConfigurationProvider提供了基於properties配置檔案的靜態配置的能力,這篇細說一下PollingPropertiesFileConfigurationProvider提供的執行時動態修改配置並生效的

QT定義視窗

qt 中允許自定義視窗控制元件,使之滿足特殊要求, (1)可以修改其顯示,自行繪製 (2)可以動態顯示 (3)可以新增事件,支援滑鼠和鍵盤操作 自定義控制元件可以直接在QtDesigner裡使用,可以直接加到父窗口裡。 繪製視窗 1.新建一個類,繼承與QWidget或QFrame,最好是繼承於QF

qt 定義視窗顯示滑鼠劃過的軌跡

滑鼠事件分為四種: 1.按下 2.擡起 3.移動 4.雙擊 滑鼠事件繼承與QWidget void mouseDoubleClickEvent(QMouseEvent *event) void mouseMoveEvent(QMouseEvent *event) void mousePres

mvn spring-boot:run動態修改配置

背景 配置檔案application.properties有一個配置項server.port=8081,如果專案根目錄下執行命令 mvn spring-boot:run 會啟動8081埠web應用 問題 如果要動態修改成8081,怎麼通過mvn spring-boot:r

記一次logback傳輸日誌到logstash根據定義設定動態建立ElasticSearch索引

轉:https://www.cnblogs.com/zhyg/p/6994314.html 先說背景,由於本人工作需要建立很多小應用程式,而且在微服務的大環境下,服務越來越多,然後就導致日誌四分五裂,到處都有,然後就有的elk,那麼問題來了 不能每個小應用都配置一個 logstash

PHP通過正則表示式動態修改配置檔案

一、相關的知識點 正表示式 preg_match_all – 進行全域性正則表示式匹配 preg_replace – 執行正則表示式的搜尋和替換 檔案的讀和寫 file_get_contents()–檔案讀取資訊函式 file_put_con

SpringBoot定義初始化Listener配置

SpringBoot自定義初始化Listener配置 0x01 摘要 在傳統的以Spring-Web程式中,我們會繼承ContextLoaderListener來實現一些早期執行的初始化程式碼。但是現在遷移到Spring-Boot後發現不能這麼做了。本文講講在SpringBoot

手把手教你ExtJS從入門到放棄——篇五(示例1:點選按鈕開啟一個定義視窗)

 例1:點選按鈕開啟一個window,window重複建立的問題 重點分析:這個問題是初學者經常會犯錯的地方,一般來說簡單的程式碼不會產生此問題,但是如果以後程式碼複雜以後,這個問題如果發生除錯起來會非常麻煩!! 不多說,JSP部分程式碼如下 003wind

微信公眾號開發(一) -- 定義選單 動態選單

簡單修改一下appid、appsecret 程式碼可直接複製使用 自定義選單 //獲取token值 $appid = ''; //微信支付申請對應的公眾號的APPID $appsecret = ''; ////微信支付申請對應的公眾號的APP Key $url = "https://

Qt重新實現QMouseEvent實現定義視窗可拖動

(1)pro檔案中加入 QT += gui (2)h檔案的類中加入標頭檔案: #include <QMouseEvent> 類中加入函式和變數宣告: protected: void mouseMoveEvent(QMouseEvent* event);

zabbix之定義使用者數監控模組配置(五)

注:zabbix自定義語法 UserParameter=<key>,<shell command> 一、修改agentd端配置檔案 法一:單獨引出配置檔案 [[email protected] ~]# cd /etc/zabbix/zabbix

unity編輯器擴充套件#1 定義視窗、面板、和屬性

擼一遍unity官方文件的給的三個案例:https://docs.unity3d.com/2017.4/Documentation/Manual/editor-EditorWindows.html 自定義視窗 首先,要注意和編輯器相關的指令碼都應該把放到Editor資料夾裡,可以有多個E