Inno Setup 系列之先卸載以後再安裝

需求
使用Inno Setup打包程序以後,不少時候咱們須要在安裝文件以前卸載原有的程序而不是覆蓋安裝,本文的Code就是實現了這樣的功能。若是想要在安裝前先卸載,那麼須要加下面代碼,須要注意的是雙星號裏面的 `{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}` 部分的改成大家本身的。網上看到有些說_is1前面用AppName,可是我這邊不行,下面code中 `{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}` 爲你的程序名,能夠去你的 Inno Setup 腳本中找到程序ID: AppId={`{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}` 也能夠到註冊表中確認,爲防止之後忘記,在這裏記錄一下,方便之後使用。php

實現原理是:從註冊表 'UninstallString' 項中讀取卸載信息,用Exec進行靜默卸載。app

[Setup]ide

; 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={**{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}**
AppName={#MyAppName}
AppVersion={#MyAppVersion}

[Code]this

function InitializeSetup(): boolean; 
var 
ResultStr: String; 
ResultCode: Integer; 
begin 
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3FC1FD05-BEC7-430A-B7DB-F07155FDE93E}_is1', 'UninstallString', ResultStr) then 
begin 
ResultStr := RemoveQuotes(ResultStr); 
Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); 
end; 
result := true; 
end;

 

靜默安裝,就是減小程序與用戶的交互,一站式的安裝過程spa

1. 靜默安裝參數
Inno Setup 的靜默安裝是經過參數來控制的.net

1.1. `/silent` 靜默安裝,但若是又報錯,仍是會提示,而且有進度條rest

1.2. `/verysilent` 靜默安裝,更強制,不過是否報錯,都不會有任何提示code

(注意:若是須要重啓電腦,它會不提示而直接重啓)blog

1.3. `/suppressmsgboxes` 由 `suppress`(抑制,鎮壓)和`msgboxes`(消息框),組成,表示不提示消息框ip

1.4. `/norestart` 結合1.2使用,這樣就不會沒有提示而直接重啓了

參數用法例子:

qq.exe /silent /suppressmsgboxes

更多參數請參考官方文檔:http://www.jrsoftware.org/ishelp/index.php?topic=scriptfunctions

2. 不只安裝過程能夠靜默,卸載過程也能夠實現
經常使用參數也同樣,但執行的是相應的卸載程序而已

如:

uninstall.exe /silent /suppressmsgboxes

更多參數請參考官方文檔:http://www.jrsoftware.org/ishelp/index.php?topic=uninstcmdline Inno Setup 中文幫助文檔https://download.csdn.net/download/qq_36190858/10836946

相關文章
相關標籤/搜索