123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Var /GLOBAL SRS_CurrentArchiveFolder
- Var /GLOBAL SRS_Rollback_FileHandle
- Var /GLOBAL SRS_Rollback_FileCount
- Var /GLOBAL SRS_LogName
-
- !macro StartRollbackSession _ArchivePath _LogName _RootKey _RegistryKey
- StrCpy $SRS_LogName ${_LogName}
- StrCpy $SRS_CurrentArchiveFolder ${_ArchivePath}
- StrCpy $SRS_Rollback_FileCount "0"
-
- Push `${_ArchivePath}`
- Push `${_LogName}`
- Call OpenRollback
-
-
- ${IF} "${_RootKey}" != ""
- ${IF} "${_RegistryKey}" != ""
- ${SetRegistry_with_RollbackControl} "${_RootKey}" "${_RegistryKey}" "SRS_RollbackPath" "$SRS_CurrentArchiveFolder"
- ${SetRegistry_with_RollbackControl} "${_RootKey}" "${_RegistryKey}" "SRS_LogName" "$SRS_LogName"
- ${ENDIF}
- ${ENDIF}
-
- !macroend
- !define StartRollbackSession "!insertmacro StartRollbackSession"
-
-
-
- !macro EndRollbackSession _RootKey _RegistryKey
- ${IF} "${_RootKey}" != ""
- ${IF} "${_RegistryKey}" != ""
- ${SetRegistry_with_RollbackControl} "${_RootKey}" "${_RegistryKey}" "SRS_COMPLETE" "1"
- ${SetRegistry_with_RollbackControl} "${_RootKey}" "${_RegistryKey}" "SRS_INSTDIR" "$INSTDIR"
- ${SetRegistry_with_RollbackControl} "${_RootKey}" "${_RegistryKey}" "SRS_SERVDIR" "$SNFServerInstallDir"
- ${ENDIF}
- ${ENDIF}
-
- FileWrite $SRS_Rollback_FileHandle "<FILECOUNT>$SRS_Rollback_FileCount</FILECOUNT>$\r$\n"
- StrCpy $SRS_Rollback_FileCount "0"
- FileWrite $SRS_Rollback_FileHandle "<END ROLLBACK FILE>$\r$\n"
- FileClose $SRS_Rollback_FileHandle
- StrCpy $SRS_Rollback_FileHandle ""
- !macroend
- !define EndRollbackSession "!insertmacro EndRollbackSession"
-
- Function OpenRollback
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- push $9
- Exch
- pop $9
-
- push $8
- Exch 2
-
- pop $8
-
- push $7
- push $6
- push $5
- push $4
- push $3
- push $2
- push $1
- push $0
-
-
- ifFileExists "$8\*.*" SRS_FolderExists 0
- CreateDirectory $8
- SRS_FolderExists:
- StrCpy $SRS_CurrentArchiveFolder $8
-
- ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
-
-
-
-
-
-
-
-
- StrCpy $7 "Archive_$2$1$0$4$5$6"
-
- StrCmp $9 "" 0 +2
- StrCpy $9 "$7_rllbck.log"
- FileOpen $SRS_Rollback_FileHandle $8\$9 w
- FileWrite $SRS_Rollback_FileHandle "<COMMENT>Started Rollback Log</COMMENT>$\r$\n"
- FileWrite $SRS_Rollback_FileHandle "<STARTDATE>$2.$1.$0,$4:$5:$6</STARTDATE>$\r$\n"
-
-
- pop $0
- pop $1
- pop $2
- pop $3
- pop $4
- pop $5
- pop $6
- pop $7
- pop $8
- pop $9
- return
- FunctionEnd
-
-
-
-
-
-
- !macro SetRegistry_with_RollbackControl _RootKey _RegistryKey _SubKey _Value
- push $1
-
- ${Switch} "${_RootKey}"
- ${Case} "HKLM"
- ReadRegStr $1 HKLM "${_RegistryKey}" "${_SubKey}"
- ${Case} "HKCR"
- ReadRegStr $1 HKCR "${_RegistryKey}" "${_SubKey}"
- ${Case} "HKCU"
- ReadRegStr $1 HKCU "${_RegistryKey}" "${_SubKey}"
- ${Case} "HKU"
- ReadRegStr $1 HKU "${_RegistryKey}" "${_SubKey}"
- ${Case} "HKCC"
- ReadRegStr $1 HKCC "${_RegistryKey}" "${_SubKey}"
- ${Case} "HKDD"
- ReadRegStr $1 HKDD "${_RegistryKey}" "${_SubKey}"
- ${Case} "HKPD"
- ReadRegStr $1 HKPD "${_RegistryKey}" "${_SubKey}"
- ${Case} "SHCTX"
- ReadRegStr $1 SHCTX "${_RegistryKey}" "${_SubKey}"
- ${EndSwitch}
-
-
- StrCmp $1 "" 0 +4
-
- ifErrors 0 +3
-
- FileWrite $SRS_Rollback_FileHandle "<REGISTRY><NEW>1</NEW><ROOT>${_RootKey}</ROOT><KEY>${_RegistryKey}</KEY><SUBKEY>${_SubKey}</SUBKEY><VALUE>${_Value}</VALUE></REGISTRY>$\r$\n"
- Goto +2
-
- FileWrite $SRS_Rollback_FileHandle "<REGISTRY><NEW>0</NEW><ROOT>${_RootKey}</ROOT><KEY>${_RegistryKey}</KEY><SUBKEY>${_SubKey}</SUBKEY><VALUE>$1</VALUE></REGISTRY>$\r$\n"
- ${Switch} "${_RootKey}"
- ${Case} "HKLM"
- WriteRegStr HKLM "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "HKCR"
- WriteRegStr HKCR "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "HKCU"
- WriteRegStr HKCU "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "HKU"
- WriteRegStr HKU "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "HKCC"
- WriteRegStr HKCC "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "HKDD"
- WriteRegStr HKDD "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "HKPD"
- WriteRegStr HKPD "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${Case} "SHCTX"
- WriteRegStr SHCTX "${_RegistryKey}" "${_SubKey}" "${_Value}"
- ${EndSwitch}
- pop $1
- !macroend
- !define SetRegistry_with_RollbackControl "!insertmacro SetRegistry_with_RollbackControl"
-
-
-
-
-
-
- !macro Install_with_RollbackControl _someFileName _CallbackHandler _onFailCommand
- StrCmp "1" "0" 0 +2
- File ${_someFileName}
-
- IfFileExists `$OUTDIR\${_someFileName}` 0 +4
-
- CopyFiles /SILENT `$OUTDIR\${_someFileName}` `$SRS_CurrentArchiveFolder\${_someFileName}`
-
-
- FileWrite $SRS_Rollback_FileHandle "<FILE><NEW>0</NEW><NAME>${_someFileName}</NAME><TARGETPATH>$OUTDIR</TARGETPATH><CALLBACK>${_CallbackHandler}</CALLBACK><ONFAIL>${_onFailCommand}</ONFAIL></FILE>$\r$\n"
- Goto +2
-
- FileWrite $SRS_Rollback_FileHandle "<FILE><NEW>1</NEW><NAME>${_someFileName}</NAME><TARGETPATH>$OUTDIR</TARGETPATH><CALLBACK>${_CallbackHandler}</CALLBACK><ONFAIL>${_onFailCommand}</ONFAIL></FILE>$\r$\n"
- File `${_someFileName}`
- IntOp $SRS_Rollback_FileCount $SRS_Rollback_FileCount + 1
- !macroend
- !define Install_with_RollbackControl "!insertmacro Install_with_RollbackControl"
-
-
-
-
-
- !macro Copy_with_RollbackControl _someFileName _Path _CallbackHandler _onFailCommand
- ifFileExists ${_Path}\${_someFileName} 0 +5
- CopyFiles /SILENT `${_Path}\${_someFileName}` `$SRS_CurrentArchiveFolder\${_someFileName}`
- CopyFiles /SILENT `${_Path}\${_someFileName}` `${_Path}\${_someFileName}_pre_sniffer_install.log`
-
-
- FileWrite $SRS_Rollback_FileHandle "<FILE><NEW>0</NEW><NAME>${_someFileName}</NAME><TARGETPATH>${_Path}</TARGETPATH><CALLBACK>${_CallbackHandler}</CALLBACK><ONFAIL>${_onFailCommand}</ONFAIL></FILE>$\r$\n"
- IntOp $SRS_Rollback_FileCount $SRS_Rollback_FileCount + 1
- !macroend
- !define Copy_with_RollbackControl "!insertmacro Copy_with_RollbackControl"
-
- !macro RollBackTo _rollbackLocalPath _rollbackLogName
- push `${_rollbackLocalPath}`
- push `${_rollbackLogName}`
- Call RollBack
- !macroend
- !define RollBackTo "!insertmacro RollBackTo"
-
- Function RollBack
- push $0
- Exch
- pop $0
-
- push $1
- Exch 2
- pop $1
- Exch
- push $2
- push $3
- push $4
- push $5
- push $6
- push $7
-
-
- push $R1
- push $R2
- push $R3
- push $R4
-
-
-
- StrCmp $SRS_Rollback_FileHandle "" ProceedToRollBack 0
-
- MessageBox MB_OK "Had to close the file?"
- !insertmacro EndRollbackSession "" ""
-
- ProceedToRollBack:
-
- ifFileExists "$1\$0" StartRollBack 0
- SetErrors
- MessageBox MB_OK "Unable to find rollback file: $1\$0"
- Goto SRS_DONE
- Return
- StartRollBack:
- clearerrors
- FileOpen $SRS_Rollback_FileHandle "$1\$0" r
- IfErrors 0 SRS_RESTORE_ReadLine
- MessageBox MB_OK "Error opening the file for rollback: $1\$0"
- Goto SRS_DONE
- SRS_RESTORE_ReadLine:
- ClearErrors
- FileRead $SRS_Rollback_FileHandle $2
-
- IfErrors SRS_DONE
-
- StrCpy $3 $2 6
-
-
- StrCmp $3 "<REGIS" 0 SRS_RESTORE_TestForFileLine
- FileOpen $7 "$1\SRS_TempFile.txt" w
- FileWrite $7 $2
- FileClose $7
-
-
-
-
- ${GetBetween} "<NEW>" "</NEW>" "$1\SRS_TempFile.txt" $4
-
- ${GetBetween} "<ROOT>" "</ROOT>" "$1\SRS_TempFile.txt" $R1
-
- ${GetBetween} "<KEY>" "</KEY>" "$1\SRS_TempFile.txt" $R2
-
- ${GetBetween} "<SUBKEY>" "</SUBKEY>" "$1\SRS_TempFile.txt" $R3
-
- ${GetBetween} "<VALUE>" "</VALUE>" "$1\SRS_TempFile.txt" $R4
-
-
-
- StrCmp $4 "SRS_RollbackPath" RemoveIt 0
- StrCmp $4 "SRS_Logname" RemoveIt 0
- StrCmp $4 "1" 0 SRS_RESTORE_WRITE
-
- RemoveIt:
- ${Switch} $R1
- ${Case} "HKLM"
- DeleteRegValue HKLM $R2 $R3
- ${Case} "HKCR"
- DeleteRegValue HKCR $R2 $R3
- ${Case} "HKCU"
- DeleteRegValue HKCU $R2 $R3
- ${Case} "HKU"
- DeleteRegValue HKU $R2 $R3
- ${Case} "HKCC"
- DeleteRegValue HKCC $R2 $R3
- ${Case} "HKDD"
- DeleteRegValue HKDD $R2 $R3
- ${Case} "HKPD"
- DeleteRegValue HKPD $R2 $R3
- ${Case} "SHCTX"
- DeleteRegValue SHCTX $R2 $R3
- ${EndSwitch}
- Goto SRS_RESTORE_ReadLine
- SRS_RESTORE_WRITE:
-
- ${Switch} $R1
- ${Case} "HKLM"
- WriteRegStr HKLM $R2 $R3 $R4
- ${Case} "HKCR"
- WriteRegStr HKCR $R2 $R3 $R4
- ${Case} "HKCU"
- WriteRegStr HKCU $R2 $R3 $R4
- ${Case} "HKU"
- WriteRegStr HKU $R2 $R3 $R4
- ${Case} "HKCC"
- WriteRegStr HKCC $R2 $R3 $R4
- ${Case} "HKDD"
- WriteRegStr HKDD $R2 $R3 $R4
- ${Case} "HKPD"
- WriteRegStr HKPD $R2 $R3 $R4
- ${Case} "SHCTX"
- WriteRegStr SHCTX $R2 $R3 $R4
- ${EndSwitch}
- Goto SRS_RESTORE_ReadLine
-
- SRS_RESTORE_TestForFileLine:
-
- StrCmp $3 "<FILE>" 0 SRS_RESTORE_ReadLine
- FileOpen $7 "$1\SRS_TempFile.txt" w
- FileWrite $7 $2
- FileClose $7
-
- ${GetBetween} "<NAME>" "</NAME>" "$1\SRS_TempFile.txt" $4
- ${GetBetween} "<NEW>" "</NEW>" "$1\SRS_TempFile.txt" $R1
-
- ${GetBetween} "<TARGETPATH>" "</TARGETPATH>" "$1\SRS_TempFile.txt" $5
-
- clearerrors
- ${GetBetween} "<CALLBACK>" "</CALLBACK>" "$1\SRS_TempFile.txt" $6
-
- iferrors NoCallbackAvailable 0
- StrCmp $6 "" NoCallbackAvailable 0
-
-
- push "$1\$4"
- push $6
- Call ResolveFunction
- Goto SRS_RESTORE_ReadLine
-
- NoCallbackAvailable:
-
- StrCmp $R1 "1" 0 SRS_NOTNEW_RESTOREIT
- ifFileExists "$5\$4" 0 SRS_RESTORE_ReadLine
- Delete "$5\$4"
- Goto SRS_RESTORE_ReadLine
-
- SRS_NOTNEW_RESTOREIT:
- CopyFiles /SILENT "$1\$4" "$5\$4"
- iferrors 0 SRS_RESTORE_ReadLine
- clearerrors
- ${GetBetween} "<ONFAIL>" "</ONFAIL>" "$1\SRS_TempFile.txt" $6
-
- push "$1\$4"
- push $6
- Call ResolveFunction
- clearerrors
- CopyFiles /SILENT "$1\$4" "$5\$4"
- iferrors 0 SRS_RESTORE_ReadLine
-
-
- Goto SRS_RESTORE_ReadLine
-
-
- SRS_DONE:
- Delete "$1\SRS_TempFile.txt"
- FileClose $SRS_Rollback_FileHandle
-
- pop $R4
- pop $R3
- pop $R2
- pop $R1
- pop $7
- pop $6
- pop $5
- pop $4
- pop $3
- pop $2
- pop $1
- pop $0
- return
- FunctionEnd
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- !macro un.RollBackTo _rollbackLocalPath _rollbackLogName
- push `${_rollbackLocalPath}`
- push `${_rollbackLogName}`
- Call un.RollBack
- !macroend
- !define un.RollBackTo "!insertmacro un.RollBackTo"
-
-
-
- Function un.RollBack
- push $0
- Exch
- pop $0
-
- push $1
- Exch 2
- pop $1
- Exch
- push $2
- push $3
- push $4
- push $5
- push $6
- push $7
-
-
- push $R1
- push $R2
- push $R3
- push $R4
-
-
- ifFileExists "$1\$0" StartRollBack 0
- SetErrors
- MessageBox MB_OK "Unable to find rollback file for uninstall: $1\$0"
- Goto SRS_DONE
- Return
- StartRollBack:
- clearerrors
- FileOpen $SRS_Rollback_FileHandle "$1\$0" r
- IfErrors 0 SRS_RESTORE_ReadLine
- MessageBox MB_OK "Error opening the file for rollback: $1\$0"
- Goto SRS_DONE
- SRS_RESTORE_ReadLine:
- ClearErrors
- FileRead $SRS_Rollback_FileHandle $2
-
- IfErrors SRS_DONE
-
- StrCpy $3 $2 6
-
-
- StrCmp $3 "<REGIS" 0 SRS_RESTORE_TestForFileLine
- FileOpen $7 "$1\SRS_TempFile.txt" w
- FileWrite $7 $2
- FileClose $7
-
-
-
-
- ${un.GetBetween} "<NEW>" "</NEW>" "$1\SRS_TempFile.txt" $4
-
- ${un.GetBetween} "<ROOT>" "</ROOT>" "$1\SRS_TempFile.txt" $R1
-
- ${un.GetBetween} "<KEY>" "</KEY>" "$1\SRS_TempFile.txt" $R2
-
- ${un.GetBetween} "<SUBKEY>" "</SUBKEY>" "$1\SRS_TempFile.txt" $R3
-
- ${un.GetBetween} "<VALUE>" "</VALUE>" "$1\SRS_TempFile.txt" $R4
-
-
-
- StrCmp $4 "SRS_RollbackPath" RemoveIt 0
- StrCmp $4 "SRS_Logname" RemoveIt 0
- StrCmp $4 "1" 0 SRS_RESTORE_WRITE
-
- RemoveIt:
- ${Switch} $R1
- ${Case} "HKLM"
- DeleteRegValue HKLM $R2 $R3
- ${Case} "HKCR"
- DeleteRegValue HKCR $R2 $R3
- ${Case} "HKCU"
- DeleteRegValue HKCU $R2 $R3
- ${Case} "HKU"
- DeleteRegValue HKU $R2 $R3
- ${Case} "HKCC"
- DeleteRegValue HKCC $R2 $R3
- ${Case} "HKDD"
- DeleteRegValue HKDD $R2 $R3
- ${Case} "HKPD"
- DeleteRegValue HKPD $R2 $R3
- ${Case} "SHCTX"
- DeleteRegValue SHCTX $R2 $R3
- ${EndSwitch}
- Goto SRS_RESTORE_ReadLine
- SRS_RESTORE_WRITE:
-
- ${Switch} $R1
- ${Case} "HKLM"
- WriteRegStr HKLM $R2 $R3 $R4
- ${Case} "HKCR"
- WriteRegStr HKCR $R2 $R3 $R4
- ${Case} "HKCU"
- WriteRegStr HKCU $R2 $R3 $R4
- ${Case} "HKU"
- WriteRegStr HKU $R2 $R3 $R4
- ${Case} "HKCC"
- WriteRegStr HKCC $R2 $R3 $R4
- ${Case} "HKDD"
- WriteRegStr HKDD $R2 $R3 $R4
- ${Case} "HKPD"
- WriteRegStr HKPD $R2 $R3 $R4
- ${Case} "SHCTX"
- WriteRegStr SHCTX $R2 $R3 $R4
- ${EndSwitch}
- Goto SRS_RESTORE_ReadLine
-
- SRS_RESTORE_TestForFileLine:
-
- StrCmp $3 "<FILE>" 0 SRS_RESTORE_ReadLine
- FileOpen $7 "$1\SRS_TempFile.txt" w
- FileWrite $7 $2
- FileClose $7
-
- ${un.GetBetween} "<NAME>" "</NAME>" "$1\SRS_TempFile.txt" $4
- ${un.GetBetween} "<NEW>" "</NEW>" "$1\SRS_TempFile.txt" $R1
-
- ${un.GetBetween} "<TARGETPATH>" "</TARGETPATH>" "$1\SRS_TempFile.txt" $5
-
- clearerrors
- ${un.GetBetween} "<CALLBACK>" "</CALLBACK>" "$1\SRS_TempFile.txt" $6
-
- iferrors NoCallbackAvailable 0
- StrCmp $6 "" NoCallbackAvailable 0
-
-
- push "$1\$4"
- push $6
- Call un.ResolveFunction
- Goto SRS_RESTORE_ReadLine
-
- NoCallbackAvailable:
-
- StrCmp $R1 "1" 0 SRS_NOTNEW_RESTOREIT
- ifFileExists "$5\$4" 0 SRS_RESTORE_ReadLine
- Delete "$5\$4"
- Goto SRS_RESTORE_ReadLine
-
- SRS_NOTNEW_RESTOREIT:
- CopyFiles /SILENT "$1\$4" "$5\$4"
- iferrors 0 SRS_RESTORE_ReadLine
- clearerrors
- ${un.GetBetween} "<ONFAIL>" "</ONFAIL>" "$1\SRS_TempFile.txt" $6
-
- push "$1\$4"
- push $6
- Call un.ResolveFunction
- clearerrors
- CopyFiles /SILENT "$1\$4" "$5\$4"
- iferrors 0 SRS_RESTORE_ReadLine
-
-
- Goto SRS_RESTORE_ReadLine
-
-
- SRS_DONE:
- Delete "$1\SRS_TempFile.txt"
- FileClose $SRS_Rollback_FileHandle
-
-
- pop $R4
- pop $R3
- pop $R2
- pop $R1
- pop $7
- pop $6
- pop $5
- pop $4
- pop $3
- pop $2
- pop $1
- pop $0
- return
- FunctionEnd
|