이것은 매우 기괴한 버그입니다.Chrome 확장 프로그램을 설치하는 NSIS 스크립트 Outlook
다음은 Google 크롬에 확장 프로그램을 설치하는 NSIS 스크립트입니다. 이상하게도 Outlook 2007이 실행되는 동안 Windows 7에서이 프로그램을 실행하면 Outlook이 종료됩니다. 오류는 "Outlook이 응답을 멈췄다"고 말한 다음 잠시 후에 닫습니다.
아무에게도 원인을 밝히고 해결할 수 있습니까?
!define VERSION "1.0.0"
!define EXT_ID "kmffervcdaycdjlksmflkjghksdf"
!define INSTALL_DIR "$LOCALAPPDATA\Google\Chrome\User Data\Default\Extensions\${EXT_ID}\${VERSION}_0"
!define P_FILE "$LOCALAPPDATA\Google\Chrome\User Data\Default\Preferences"
!include "ZipDLL.nsh"
!include "TextFunc.nsh"
!insertmacro LineFind
!include "WordFunc.nsh"
!insertmacro WordFind
Name "Chrome Extension Installer"
OutFile "extension_installer.exe"
RequestExecutionLevel admin
Var PMEMORY
Var SIZE
Function .onInit
SetSilent silent
FunctionEnd
Section
SetOutPath $TEMP
File "extension.crx"
File "chrome_preferences.txt"
CreateDirectory "${INSTALL_DIR}"
ZipDLL::extractall "$TEMP\extension.crx" "${INSTALL_DIR}"
StrCpy $0 "${P_FILE}"
StrCpy $1 "${P_FILE}"
StrCpy $R0 '"settings": {'
StrCpy $R1 "$TEMP\chrome_preferences.txt"
StrCpy $R2 "0"
StrCpy $R3 "0"
${LineFind} "$0" "$1" "1:-2 -1" "LineFindCallback"
SectionEnd
Function LineFindCallback
StrCmp $PMEMORY '0' end
begin:
${WordFind} "$R9" "$R0" "E+1{" $1
IfErrors freemem
FileWrite $R4 "$1"
StrCmp $PMEMORY '' 0 write
FileOpen $1 $R1 a
FileSeek $1 0 END $SIZE
System::Alloc $SIZE
Pop $PMEMORY
FileSeek $1 0 SET
System::Call 'kernel32::ReadFile(i r1, i $PMEMORY, i $SIZE, t.,)'
FileClose $1
write:
IntOp $R3 $R3 + 1
System::Call 'kernel32::WriteFile(i R4, i $PMEMORY, i $SIZE, t.,)'
${WordFind} "$R9" "$R0" "+1}" $R9
StrCmp $R3 $R2 0 begin
freemem:
StrCmp $PMEMORY '' end
StrCmp $R7 -1 +2
StrCmp $R3 $R2 0 end
System::Free $PMEMORY
StrCpy $PMEMORY 0
end:
Push $0
FunctionEnd
당신은 항상 자동 설치를 강제 할 경우, 당신은 SilentInstall 속성을 사용할 필요가 없습니다 수 있습니다 .onInit ... – Anders
RequestExecutionLevel admin과 $ LOCALAPPDATA를 섞어도 괜찮지 않은 경우 관리자가 아닌 사용자가 admin 그룹의 구성원 인 다른 사용자와 승격 할 때 잘못된 $ LOCALAPPDATA로 끝납니다! – Anders
이 전체 스크립트를 알려주십시오. –