上一頁 | 目錄 | 下一頁

B.4 Visual Basic 6 Runtimes

把這些代碼新增到你的腳本裡可以安裝或卸載 VB6 runtimes.

正常的版本應該包含下列的檔案 (或者修改路徑到你使用的另一個路徑):

一篇 Microsoft 文章 解釋了如何取得這些檔案。

要詢問用戶必要時是否重啟請使用一個帶有完成頁面的 MUI 或使用 IfRebootFlag 結合 MessgaeBox 來判斷是否需要重啟。

 !include Library.nsh

 Var ALREADY_INSTALLED

 Section "-Install VB6 runtimes"

   ;Add code here that sets $ALREADY_INSTALLED to a non-zero value if the application is already installed. For example:

   IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
     StrCpy $ALREADY_INSTALLED 1
   new_installation:

   !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED "msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR"
   !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED    "oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
   !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED    "olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR"
   !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED    "comcat.dll"   "$SYSDIR\comcat.dll"   "$SYSDIR"
   !insertmacro InstallLib DLL    $ALREADY_INSTALLED REBOOT_PROTECTED    "asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR"
   !insertmacro InstallLib TLB    $ALREADY_INSTALLED REBOOT_PROTECTED    "stdole2.tlb"  "$SYSDIR\stdole2.tlb"  "$SYSDIR"

 SectionEnd

 Section "-un.Uninstall VB6 runtimes"

   !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll"
   !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll"
   !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll"
   !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll"
   !insertmacro UnInstallLib DLL    SHARED NOREMOVE "$SYSDIR\asycfilt.dll"
   !insertmacro UnInstallLib TLB    SHARED NOREMOVE "$SYSDIR\stdole2.tlb"

 SectionEnd

你可以使用類似的代碼來安裝公共的 VB6 ActiveX 控件 (例如 Windows Common Controls 控件)。

上一頁 | 目錄 | 下一頁