Inno Setup 支援在同一個目錄中安裝多個應用程式,所以根據安裝的先後次序自動將卸載程式檔案命名為
unins000.exe,unins001.exe,unins002.exe 等等。這是 INNO SETUP 自身的功能。請參閱
http://www.jrsoftware.org/iskb.php?uninstallername 。
一旦安裝過程結束後,你當然可以將卸載檔案的名稱改成任意其它的檔案名稱,注意的是你除了要更改安裝目錄裡面的 unins00X.exe 和
unins00X.dat,還要更改註冊表中的相關卸載資訊。由於卸載程式檔案的實際位置和名稱可以用常量 {uninstallexe}
表示,所以你可以讓你的安裝程式自動進行這些修改,見樣本指令碼。
以下為引用的內容:; Inno Setup 指令碼<br />; 該樣本指令碼顯示如何自訂卸載檔案的名稱(預設為 unins000.exe,unins001.exe 等等)。<br />[Setup]<br />AppName=自訂卸載檔案名稱樣本程式<br />AppVerName=自訂卸載檔案名稱樣本程式 1.0<br />DefaultDirName={pf}/自訂卸載檔案名稱樣本程式<br />DefaultGroupName=自訂卸載檔案名稱樣本程式<br />[Files]<br />Source: "MyProg.exe"; DestDir: "{app}"<br />Source: "MyProg.hlp"; DestDir: "{app}"<br />Source: "Readme.txt"; DestDir: "{app}"<br />[CODE]<br />procedure CurStepChanged(CurStep: TSetupStep);<br />var<br />uninspath, uninsname, NewUninsName, MyAppName: string;<br />begin<br />if CurStep=ssDone then<br />begin<br />// 指定新的卸載檔案名稱(不包含副檔名),請相應修改!<br />NewUninsName := '卸載';<br />// 應用程式名稱,與 [SEUTP] 段的 AppName 必須一致,請相應修改!<br />MyAppName := '自訂卸載檔案名稱樣本程式';<br />// 以下重新命名卸載檔案<br />uninspath:= ExtractFilePath(ExpandConstant('{uninstallexe}'));<br />uninsname:= Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8);<br />RenameFile(uninspath + uninsname + '.exe', uninspath + NewUninsName + '.exe');<br />RenameFile(uninspath + uninsname + '.dat', uninspath + NewUninsName + '.dat');<br />// 以下修改相應的註冊表內容<br />if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1') then<br />begin<br />RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'UninstallString', '"' + uninspath + NewUninsName + '.exe"');<br />RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/' + MyAppName + '_is1', 'QuietUninstallString', '"' + uninspath + NewUninsName + '.exe" /SILENT');<br />end;<br />end;<br />end;