此腳本支持打包mysql、安裝mysql服務、安裝windows服務、操作ini文件、操作注冊表、高效壓縮文件等功能,基本能滿足常用的軟件打包需求。
;定義各種常量 #define MyAppName "軟件名稱" #define MyAppDirName "軟件目錄名稱" ;下面的版本號,公司名稱,網址在 控制面板->卸載應用程序 的地方可看到 #define MyAppVersion "版本號" #define MyAppPublisher "公司名稱" #define MyAppURL "軟件網址鏈接" #define MyAppExeName "主執行文件.exe" [Setup] ; 注: AppId的值為單獨標識該應用程序。 ; 不要為其他安裝程序使用相同的AppId值。 ; (生成新的GUID,點擊 工具|在IDE中生成GUID。) AppId={{1394783A-5D3C-48CD-8470-E2DFBB844E42} AppName={#MyAppName} AppVersion={#MyAppVersion} AppVerName={#MyAppName} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppDirName} DefaultGroupName={#MyAppName} ;安裝包文件輸出目錄 OutputDir=D:\Output\ ;安裝包文件名 OutputBaseFilename=setup ;壓縮文件 Compression=lzma SolidCompression=yes ;以管理員權限運行 PrivilegesRequired=admin UninstallDisplayIcon={app}/{#MyAppExeName} VersionInfoVersion=1.0.0.0 ;安裝包語言 [Languages] Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" [Files] Source: "F:\Output\源程序文件目錄\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ;源程序文件目錄 [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"; ;安裝完成后要執行的操作 [Run] Filename: "{app}\mysql\bin\mysqld"; Parameters: " --install mysql --defaults-file=""{app}\mysql\my.ini"""; WorkingDir: "{app}\mysql\bin"; Flags: runhidden; ;安裝mysql服務 Filename: "{sys}\net"; Parameters: "start mysql"; WorkingDir: "{sys}"; Flags: runhidden; ;啟動mysql服務 Filename: "{dotnet40}\installutil.exe"; Parameters: " MyService.exe"; WorkingDir: "{app}"; Flags: runhidden; ;安裝windows服務 Filename: "{sys}\net"; Parameters: "start MyService"; WorkingDir: "{sys}"; Flags: runhidden; ;啟動windows服務 Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent runasoriginaluser ;是否啟動軟件 ;卸載后執行的操作(停止、刪除各種服務) [UninstallRun] Filename: "{sys}\net"; Parameters: "stop mysql"; WorkingDir: "{sys}"; Flags: runhidden; Filename: "{sys}\net"; Parameters: "stop MyService"; WorkingDir: "{sys}"; Flags: runhidden; Filename: "{app}\mysql\bin\mysqld"; Parameters: " --remove mysql"; WorkingDir: "{app}\mysql\bin"; Flags: runhidden; Filename: "{dotnet40}\installutil.exe"; Parameters: "/u MyService.exe"; WorkingDir: "{app}"; Flags: runhidden; ;操作my.ini文件,修改basedir和datadir目錄 [INI] Filename: "{app}\mysql\my.ini"; Section: "mysqld"; Key: "basedir"; String: "{app}/mysql" Filename: "{app}\mysql\my.ini"; Section: "mysqld"; Key: "datadir"; String: "{app}/mysql/data" ;卸載后刪除目錄所有文件,刪除空目錄 [UninstallDelete] Type: filesandordirs; Name: "{app}\*" Type: dirifempty; Name: "{app}" ;操作注冊表 [Registry] Root: HKLM; Subkey: "Software\SoftName"; Flags: uninsdeletekey;