Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Limonica

Старожил


Сообщения: 152
Благодарности: 8

Профиль | Отправить PM | Цитировать


kotkovets, пересматриваю ваш код по установке устройств, но есть странная особенность установка\обновление идет только в том случае если устройство уже установленно, если же оно не установленно ничего не происходит. Тестировался нижеследущий код XP Professional - все ок, XP Home - установка не проходит, в чем может быть проблема, непонятно, буду благодарен если посмотрите...

Код: Выделить весь код
!define ERROR_NO_SUCH_DEVINST       -536870389
!define SPOST_NONE                  0
!define SPOST_PATH                  1
!define SPOST_URL                   2
!define SP_COPY_DELETESOURCE        0x1
!define SP_COPY_REPLACEONLY         0x2
!define SP_COPY_NOOVERWRITE         0x8
!define SP_COPY_OEMINF_CATALOG_ONLY 0x40000
!define CM_LOCATE_DEVNODE_NORMAL    0x00000000
!define CM_REENUMERATE_NORMAL       0
!define InstallDriver               "!insertmacro InstallDriverCall"
 
!include "logiclib.nsh"
 
 
!macro InstallDriverCall HID INFPATH INFDIR
 
     System::Store S 
      Push "${INFDIR}"
      Push "${INFPATH}"
      Push "${HID}"
 
      DetailPrint "Rescan drivers..."
 
      System::Call "cfgmgr32::CM_Locate_DevNode(*i.r0, n, i${CM_LOCATE_DEVNODE_NORMAL}) i.r1"
 
      ${If} $1 <> 0
 
         StrCpy $1 1
 
      ${Else}
 
          System::Call "cfgmgr32::CM_Reenumerate_DevNode (ir0, i${CM_REENUMERATE_NORMAL}) i.r1"
 
         ${IfThen} $1 <> 0 ${|}StrCpy $1 2${|}
 
      ${EndIf}
 
      ${If} $1 = 0
 
          DetailPrint "Installing the driver..."
 
          System::Call "newdev::UpdateDriverForPlugAndPlayDevices(i0, ts, tss, i0, *i0)?ei.s"
 
         Pop $0
 
         IntCmp $0 ${ERROR_NO_SUCH_DEVINST} 0 +2 +2
 
         DetailPrint "The device is not plugged in, cannot update the driver."
 
         ${If} $0 = 0
 
              System::Call "setupapi::SetupCopyOEMInf(ts, ts, i${SPOST_PATH}, i0, i0, i0, *i0, tn)i.r0"
 
              IntCmp $0 1 0 +2 +2
 
              DetailPrint "Istall driver success!"
 
              IntCmp $0 0 0 +2 +2
 
              DetailPrint "Istall driver error!"
 
         ${EndIf}
 
    ${ElseIf} $1 = 1
 
          DetailPrint "An error occurred while trying to get the device instance for the machine"
 
    ${ElseIf} $1 = 2
 
          DetailPrint "An error occurred while trying to refresh the device list"
 
    ${EndIf}
 
    System::Store L
 
!macroend
 
 
 
OutFile InstDrv.exe
 
ShowInstDetails show
 
 
 
Section
 
   # ${InstallDriver} "HWID" "путь к inf файлу" "папка с дровами"
 
   ${InstallDriver} "ROOT\RDPDR" "$WINDIR\inf\machine.inf" "$WINDIR\inf"
 
SectionEnd

Последний раз редактировалось Limonica, 05-11-2013 в 01:44.


Отправлено: 01:33, 05-11-2013 | #700