>

WiX 설치 프로그램을 사용하여 Notes 플러그인을 설치하고 있습니다. IniFile 작업을 사용하여 Notes에 플러그인을로드하도록 지시하는 notes.ini의 필드를 설정합니다. WiX 3.7.1224.0을 사용하고 있습니다

<IniFile Id="HLBridgeDLLINI" Action="addTag" Directory="LOTUSNOTESINIDIRECTORY" Name="Notes.ini" Section="Notes" Key="AddInMenus" Value="HLBridge.dll"/>
<IniFile Id="HLClientDLLINI" Action="addTag" Directory="LOTUSNOTESINIDIRECTORY" Name="Notes.ini" Section="Notes" Key="EXTMGR_ADDINS" Value="HLClient.dll"/>

설치 프로그램을 실행하기 전에 모든 사용자가 notes.ini 파일을 쓸 수 있습니다. 설치 후 Everyone 사용자가 보안 속성에서 누락되었습니다. 아마도 보안상의 이유로 WiX가 이것을하고 있습니까? 그렇다면 이것을 비활성화하는 방법이 있습니까? 필요한 경우 보안을 다시 변경하기위한 사용자 지정 작업을 작성할 수 있습니다.


  • 답변 # 1

    짧은 버전

    맞춤 권한은 WiX 요소 또는 설치 과정 중 사용자 지정 작업을 통해 (예기치 않게) 적용되는 것 같습니다(아래에서 논의 할 수있는 다른 원인-주요 내용 확인) 특히 파일 업그레이드 가능성 또는 그룹 정책 가능성).

    디버깅에 대한 힌트WiX 소스또는컴파일 된 MSI 파일또는자세한 로그 파일에서 찾을 수 있습니다.(시작할 장소를 지정하십시오). 아래의 각 옵션에 대한 세부 사항.

    아래는 매우 "유기적으로"쓰여졌습니다. 약간 진화 했으므로 약간 중복됩니다. 그대로 두겠습니다.

    <시간> 기타 가능한 원인

    주요 업그레이드 파일 되돌리기: 설치 후 파일에 대한 권한이 적다는 것은 매우 이상한 일입니다. 아마도 이것은 설치 중에 그룹 정책 또는 파일 다시 작성을 나타 냅니까? 후자는 그러한 중요한 파일에 대해 거의 들리지 않을 것입니다. 그러나업데이트가 주요 업그레이드이고 원래 MSI가 INI 파일을 파일 (INI 파일 항목 대신)로 파일로 설치 한 경우에 발생할 수 있습니다. 비 영구 파일.

    이 시나리오에서는 INI 파일을 제거했다가 다시 설치합니다. 사용자 정의 ACL 권한을 제거 할 수 있습니다(ACL 권한은 매우 복잡하여 상속 및 재정의 할 수 있음) , 거부 또는 부여 등 ...). 이전 파일에 추가 된 모든 사용자 정의 INI 항목도 지워집니다. 설치 후 누락 된 사용자 정의 항목을 확인하십시오.

    이것은 일반적인 문제입니다 (주요 업그레이드 파일 되돌리기) : 주 업그레이드 파일을 제거한 후 다시 설치하면 파일이 지워지고 설치 될 때 파일이 되돌 리거나 덮어 쓰게됩니다 대신 새롭고 ACL 문제 이외의 다른 많은 문제를 유발할 수 있습니다.

    예기치 않은 권한 부여를위한 다른 잠재적 소스도 가능합니다 :

    동일한 INI 파일을 대상으로하는 다른 Lotus Notes 관련 MSI 패키지의 복구/수정 작업?

    또 다른 MSI가 권한을 수행하는 동일한 설치 번들의 일부로 실행됩니까?

    표준 ACL을 적용하는 그룹 정책/활성 디렉토리 프로세스? (샘플)

    펑크 한 일을하는 관리자 모드에서 실행 파일/서비스가 실행됩니까?

    예약 된 작업 간섭? (일부 가능성)

    로그온 스크립트가 펑키 한 일을합니까? (아마도 귀하의 경우는 아니지만 로그인 스크립트는 거의 "무엇이든"할 수 있습니다.)

    다른 예기치 않은 소스.관리자 권한이있는 것은이 작업을 수행합니다. 이는 명백한 공통 분모입니다.

    내 2 센트: 사내 회사 패키지 인 경우 그룹 정책을 사용하여 대신 권한을 적용하고 패키지에서 작업을 제거합니다 (그룹 정책 제어 외부의 컴퓨터에 배포하지 않는 한- 하지만 특별한 패키지를 가지고 있다면 권한 만 부여하고 메인 패키지에서 권한을 유지하면 오류가 덜 발생합니다.

    <시간>ACL

    당신이 묘사 한 문제는 매우 흥미 롭습니다. WiX에서 ACL과 충돌하는 자동 항목은 알지 못하지만 보장 할 수는 없습니다. 그러나 ACL을 명시 적으로 지정할 때 ACL을 변경하도록 설계된 구성이 있습니다. 이러한 구성에 대해 MSI를 확인해야합니다 (아래 설명 참조)

    그러나 우선 WiX MSI에서연기 테스트를 실행하여 문제를 복제 할 수 있는지 확인하고복제 할 수 없습니다. 최근의 Windows Update에서 이것이 변경 될 수 있다는 것이 두려웠습니다. 즉, Windows Installer의 핵심 기능을 변경하는 사람의 인식없이 배포 된 일종의 보안 픽스 (첫 번째는 아님).

    <시간> ACL 권한 MSI에서 ACL 권한을 구현하는 방법에 대한 일부 정보. 기본적으로준비된 WiX 요소를 사용하거나사용자 정의 작업을 실행할 수 있습니다.

    ACL 권한을 처리하는 여러 WiX 요소가 있으며 표준 내장 MSI 테이블에 설정이 추가되거나 사용자 지정 WiX 테이블에 항목이 추가됩니다.WiX 소스에서이 요소를 찾습니다 (사용 가능한 경우)(샘플) :

    권한(기본 제공 표준 MSILockPermissions 테이블에 매핑)

    PermissionEx(WiX 관련유틸리티 확장권한-사용자 지정 WiX 테이블에 매핑)

    PermissionEx(기본 제공 표준 MSIMsiLockPermissionsEx 테이블-Windows Installer 버전 5에 추가 된 기능).

    FileSharePermission(WiX 관련 Util 확장 파일 공유 권한-사용자 지정 WiX 테이블에 매핑)

    WiX 직원이 이러한 다양한 권한 옵션을 모두 지원하기로 결정한 이유를 잘 모르겠습니다. 그 이유는 확실하지만 이유가 있습니다.이를 유지하기 위해서는 많은 작업이 필요하기 때문입니다. 나는 허용 코드를 직접 작성했으며, 내 견해로는 다루기 어려운 음모의 시한 폭탄입니다. 당신이 믿지 않는 것처럼 권한이 퍼밋되지만, 여기서는 주제가 아닙니다. 요약 된 견해로는 권한이 거의 없지만 ACL 권한을 통해 모든 유연성을 얻을 수 있습니다. 나는 일반적인 "매크로"를 선호한다 : GenericAll="yes" GenericExecute="yes" GenericRead="yes" GenericRead="no" 등 ...

    또한맞춤 동작을 사용하여subinacl.exe,cacls.exe와 같은명령 줄 권한 도구를 호출 할 수 있습니다,xcacls.exe,icacls.exe또는 다른 몇 가지-안정성 및 보안상의 이유로 권장하지 않습니다. 다른 옵션이있는 경우 사용자 지정 동작을 사용하는 것이 바람직하지 않습니다. WiX/MSI 설정에서 사용자 지정 동작 사용을 제한하는 것이 좋은 이유는 무엇입니까?

    와이즈 비즈기술적 인 이유로 사용하지 않을 요소, 내장 Permission  테스트 한 적이없는 테이블. WiX 관련 MsiLockPermissionsEx  element는 아마도이 ACL 권한이 필요한 경우 사용하기로 선택한 것입니다.

    <시간> MSI 검사

    WiX 소스 액세스 권한이있는 경우 문제를 일으키는 권한 요소 또는 사용자 지정 동작 요소를 찾을 수 있어야합니다.

    그러나WiX 소스 액세스 권한이없는 경우, 실제 컴파일 된 MSI 파일에서 사용자 지정 권한을 적용 할 수있는 사용자 지정 기능을 확인할 수 있습니다. 해당 MSI에있는 사용자 지정 작업 테이블 및 사용자 지정 WiX/MSI 테이블에 중점을 둡니다.

    즉, ACL을 설정하는 데 사용되는맞춤 동작맞춤 테이블설치에 사용 된 컴파일 된 MSI 파일을 검사합니다. 표준 MSI 테이블 목록은 MSDN을 참조하십시오. 당신이 찾지 못한 테이블은 사용자 정의가 있습니다.

    MSI를 검사하려면 Orca 또는 이와 동등한 도구를 사용하십시오. 사용할 수있는 도구 목록 (상업적 또는 무료) : 두 개 이상의 MSI 파일의 내용을 어떻게 비교할 수 있습니까?

    <시간> 자세한 로깅

    항상 내가하는 일을 할 수도 있습니다 :문제가있는 MSI 설치를위한 적절한 상세 로그 생성. 이를 통해 무슨 일이 일어나고 있는지 파악할 수 있습니다. 따라서 MSI 검사보다 더 나은 경우도 있습니다. 여기에서 로깅을 수행하는 방법에 대한 정보를 찾을 수 있습니다.

    또는모든 MSI 설치에 대한 로깅을 활성화할 수 있습니다. 이를 수행하는 방법은 로깅에 대한 installsite.org ( "시스템의 모든 설정에 대한 전 세계"섹션)를 참조하십시오.dev 및 테스트 상자에 대해이 기본 로깅을 설정하는 것이 좋지만 설치 성능에 영향을 미치고 temp 폴더에 많은 로그 파일을 추가합니다 (한 번에 한 번만 zap 할 수 있음). 일반적으로 갑자기 MSI 오류가 표시되고 로그가 있었으면합니다. 이제 PermissionEx 에서 언제든지 준비 할 수 있습니다. .

    <시간>

    또한 사용중인 OS를 기록하고이 OS에서만 문제가 나타나는지 확인 하시겠습니까? 최신 핫픽스가 설치되어 있는지 확인해야합니다.

    %tmp%

  • 이전 android - jsoup을 사용하여 클래스 이름이나 ID가없는 에 액세스
  • 다음 c# - SQL Server 사용시 Entity Framework의 Last () 시뮬레이션