2010-04-07 2 views
1

서비스 및 일부 바로 가기 (및 다른 많은 파일)를 설치하는 WiX 기반 MSI가 있습니다.서비스가 시작될 때 MSI Installer가 자동 복구를 시작합니다.

바로 가기는 HKCU 아래의 레지스트리 키를 키 파일로 사용하여 WiX docs에 설명 된대로 만들어집니다. 이것은 모든 사용자가 설치하지만 ICE38을 통과하기 위해서는이 레지스트리 키가 현재 사용자 아래에 있어야합니다.

서비스가 시작되면 (SYSTEM 계정으로 실행되는 경우) 해당 레지스트리 키가 유효하지 않음을 알게되고 (적어도 해당 사용자 이상) 설치를 다시 실행하여 "복구"합니다.

이벤트 로그에서 "HKEY_CURRENT_USER \ SOFTWARE \ MyInstaller \ Foo '리소스가 존재하지 않음을 나타내는 MsiInstaller 이벤트 1001 및 1004가 표시됩니다." SYSTEM 사용자가이 키를 가지고 있지 않기 때문에 이것은 놀라운 일이 아닙니다.

시스템 전체의 MSI 로깅을 켜고 자동 복구가 현재 사용자가 SYSTEM (로그 파일을 더한 것)을 암시하는 것으로 보이는 특정 사용자의 TEMP 폴더가 아닌 C : \ Windows \ Temp 폴더에 로그 파일을 만들었습니다 "전화 걸기 프로세스"가 내 서비스 임).

자동 복구 기능을 사용하지 않도록 설정할 수 있습니까? 내가 뭔가 잘못하고 있거나 MSI 규칙을 어기고 있습니까? 다음에 어디를보아야하는지 힌트가 있습니까?

+0

당신은 alluser의 시작 메뉴에 바로 가기를 추가 할 수 없습니다 파일 시스템에서 대신? –

답변

0

구성 요소를 개별 기능으로 분할합니다. 자체 기능에 서비스를 넣으면 다른 구성 요소를 검색하지 않습니다.

0

광고 된 바로 가기를 사용하는 경우 HKCU 레지스트리 항목이 필요하지 않습니다.

+0

이것은 이상하게 들릴지 모르지만, 내가 일하는 곳에서는 실제로 광고/수리를 좋아하지 않습니다. 우리 소프트웨어는 소프트웨어를 저장하지만 고객은 수리 기간을 보지 않는 환경에 배치됩니다. –

0

자동 복구를 피하기 위해 동일한 효과가 나타나는 you could use ActiveSetup은 각 사용자가 프로그램 (일반적으로 HKCU 레지스트리 설정을 구성하는 구성 프로그램 또는 스크립트)을 갖도록합니다. 시스템은 dead simple입니다. 정확히 한 번 실행하십시오.

합니다 (first article linked above, 내가 몇 년 전에 쓴 뭔가 다른 방법을 비교하고 당신이 이미 짐작하지 않은 경우,하는 ActiveSetup 호의 ...)

관련 문제