inno setup使用心得

來源:互聯網
上載者:User

      今天研究了一天的inno setup,下面說說我的使用心得。inno setup的基礎性的知識可以去網上搜,一大堆。

      主要說一下我覺得特別需要注意的地方:

[Setup]
;(在編譯器中點擊菜單“工具 -> 產生 GUID”可以產生一個新的 GUID)
AppId={{33B09C83-AB05-47DE-BFC0-C13A85DA5743}
AppName=myprogram
AppVerName=myprogram
AppPublisher=你的公司名
AppPublisherURL=你的公司網站
AppSupportURL=你的公司網站
AppUpdatesURL=你的公司網站
DefaultDirName={pf}\myprogram  <---------在安裝嚮導中提示使用者指定安裝目錄時的預設目錄
;DefaultGroupName=myprogram   <------在開始菜單的名字
OutputBaseFilename=myprogram <---------表示你的安裝檔案名稱為myprogram.exe(如果改成是setup,那麼產生的檔案名稱就是setup.exe
Compression=none
SolidCompression=no
AlwaysRestart=no
;不指定安裝路徑和不添加開始功能表項目
;DisableDirPage=yes
DisableProgramGroupPage=yes    
VersionInfoVersion = 0.1.1

[Languages]
Name: "chinese"; MessagesFile: "compiler:Default.isl"   <------指定安裝時用的語言為簡體中文

;[Tasks]
;因為它沒有使用者互動介面程式,直接是在命令視窗下啟動並執行,所以這個驅動不能建立捷徑,
;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]   <--source:代表你電腦中的驅動檔案,經過編譯之後都會整合在setup中。別人使用這個setup程式時就直接把這些檔案放到他的電腦app目錄下,app是他選擇的目錄 
Source: "driver.inf";DestDir: "{app}";Flags: ignoreversion; Check:  Isx86  
Source: "driver.sys";DestDir: "{app}";Flags: ignoreversion; Check:  Isx86  
Source: "udriver.exe";DestDir: "{app}";Flags: ignoreversion;Check:  Isx86 
Source: "driver.ids";DestDir: "{app}";Flags: ignoreversion;Check:  Isx86 
Source: "devcon.exe";DestDir: "{app}";Flags: ignoreversion;Check:  Isx86
Source: "CheckDriverExist.bat";DestDir: "{app}";Flags: ignoreversion;Check:  Isx86 <---這個.bat是自己寫的批次檔,負責檢測當前驅動是否已經安裝,防止多次安裝

 
[Run]  <------下面這個是執行添加硬體的那個安裝
Filename: "{app}\devcon.exe"; Parameters: "install US.inf ""root\usbipenum"""; WorkingDir: "{app}";Flags: runhidden; Check:IsSMIUSBoverIPExist

[code]
var
    ErrorCode: Integer;
    ResultString: String;

function Isx86:Boolean;
begin
     Result:=not IsWIn64;
end;

function IsSMIUSBoverIPExist:Boolean;
begin   
    ShellExec('', ExpandConstant('{app}\CheckUSBoverIPExist.bat'),
     '', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
    ResultString:=GetIniString('SMIUSBoverIP','result',ResultString,ExpandConstant('{app}\result.ini'));
    Result := true;
    if (ResultString <> '0') then begin
     Result := false;
    end
end;   

  前面一直不懂,我們要做什麼事情,inno serup的執行步驟是什嗎?想了很久,才知道它的一步一步的介面都已經為我們做好了,我們要做的就是FIles部分和Run部分。

files部分主要是添加檔案到使用者系統中去,你可以再這個過程的check進行條件安裝,主要是check的函數需要自己寫的。

     有了前面一部分之後,就進行編譯,通過了產生了exe檔案,然後進行安裝,可是怎麼安裝都安裝不成功。一直想不通安裝的動作動作子啊那裡?後面看了別人的代碼才知道在RUN部分。Run部分是核心,前面一直在做的是檔案轉移,使用devcon才是真正的添加硬體。

      本人比較孤陋寡聞,也許這些東西很簡單,一般人都不會有這樣的疑惑。我是希望能夠讓那麼有這樣疑惑的人能夠不要再像我這樣花好長時間去弄這些簡單的問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.