Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[버그] 인터넷등기소 인쇄 기능 작동 안함 #108

Closed
rkttu opened this issue Feb 4, 2023 · 6 comments
Closed

[버그] 인터넷등기소 인쇄 기능 작동 안함 #108

rkttu opened this issue Feb 4, 2023 · 6 comments
Assignees
Labels
버그 기능에 이상이 있습니다.

Comments

@rkttu
Copy link
Member

rkttu commented Feb 4, 2023

인터넷등기소 인쇄 기능이 Windows Sandbox 상에서는 작동하지 않도록 차단된 것을 확인함 (2023-02-04)

  • 초기 종속성을 어떻게 설치했든 (IE 모드를 사용했는지 여부와 무관하게) Report 프로그램을 띄울 때 프로그램이 제대로 실행되지 않고 강제 종료됨.
  • 문제 분석 결과, 윈도우 샌드박스에서는 TrustedInstaller 서비스가 비활성화된 상태이고, 또한 C:\Windows\WinSXS 폴더 내에 Fusion이라는 디렉터리가 처음부터 없는 상태.
    • Fusion 디렉터리를 만들려면 Administrators 권한이 아닌 TrustedInstaller 권한으로 실행된 프로세스가 필요
    • VC++ 2005, VC++ 2008 런타임 설치 패키지는 설치 프로그램을 실행하면 TrustedInstaller로 실행되지 않기 때문에 아래와 같은 오류가 발생하는 것
    • 강제로 TrustedInstaller 권한 대신 C:\Windows\WinSxS 폴더를 Administrators가 편집할 수 있게 권한을 바꾸고 난 후, Fusion 디렉터리를 만들어 (여기까지 해야만 설치가 됨) VC++ 2008 런타임을 설치한 후에는 더 이상 파일 경로 없음 오류가 나타나지 않았고, 결과적으로 Redist 문제가 해결되어 처음 발견한 문제가 해결된 것도 확인됨.
  • 최종적으로 이 문제를 우회할 수 있는 방안으로 WinSxS 디렉터리에 Fusion, InstallTemp 디렉터리를 만듦으로서 해결되는 것을 확인함. 관련된 패치를 우선 Catalog XML Bootstrap 스크립트에 넣었지만, VC++ Redist가 결국 따로 설치되어야 하므로 TableCloth 다음 버전에서는 Catalog XML 옵션을 좀 더 보완할 필요가 있다.
    • 예: iros에서 제공하는 vcredist_sudong.exe 파일에 관한 옵션 플래그로 다음과 같이 카탈로그를 구성한다.
      <Package Name="VCRedistManual" Url="http://www.iros.go.kr/iris/VCRedist_sudong.exe" Arguments="/silent" MitigateWinSxS="True" />

아래는 2차 조사 기록:

  • 샌드박스 내에서 Fusion 디렉터리를 Administrators 계정으로도 만들 수 있게 처리하는 방법이 필요하지 않을지 검토 필요.
  • 다만 위의 조건을 만족시키기 위한 절차가 까다로운편. WDAGUtilityAccount나 Administrators 중 어느쪽에 권한을 주는 것이 맞는지도 불명확. 수동 fix 가이드를 먼저 작성해야 할 필요가 있음.

아래는 초기 조사 기록:

  • 좀 더 확인해봤을 때, 원인은 VC++ 2008 재배포 패키지가 제대로 설치되지 않았기 때문인 것으로 보임. 그런데 Windows Sandbox에서는 2023년 2월 현재 VC++ 2008 재배포 패키지를 정상적으로 설치할 방법이 마땅치 않음.
    • 참고: 오류가 발생할 때 "Microsoft.VC90.ATL,version='9.0.30729.6161',publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86",type="win32" 또는 Microsoft.VC90.ATL,version='9.0.30729.6161',publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="amd64",type="win32" 어셈블리의 경로를 찾을 수 없다고 나옴.
    • VC++ 2005, 2008 런타임 모두 비슷한 오류가 발생하고, VC++ 2010 런타임부터는 보이지 않음.

호환성 문제를 개선할 여지가 있을지, 아니면 이전에 #97 에서 논의한 것과 같이 Hyper-V를 응용한 Sandbox 레플리카 VM을 Windows에서도 그대로 도입할지 고민이 필요한 부분이라고 생각함.

@rkttu rkttu added the 버그 기능에 이상이 있습니다. label Feb 4, 2023
@rkttu rkttu self-assigned this Feb 4, 2023
@rkttu
Copy link
Member Author

rkttu commented Feb 4, 2023

https://github.com/nfedera/run-as-trustedinstaller/blob/master/run-as-trustedinstaller/main.cpp

위의 내용을 토대로 VC++ 2008 런타임 재배포 패키지가 샌드박스 내에서 설치가 가능할지 살펴보려 함.

@rkttu
Copy link
Member Author

rkttu commented Feb 4, 2023

다음의 PowerShell 명령어를 실행하여 VC++ 2008 Redist x86/x64가 모두 설치되는 것을 확인함.

takeown /f c:\windows\winsxs /a /r /d Y
icacls "C:\windows\winsxs" /grant "Administrators:(OI)(CI)F" /T
mkdir C:\Windows\winsxs\Fusion | Out-Null
mkdir C:\Windows\winsxs\InstallTemp | Out-Null

Set-Service -StartupType Automatic -ServiceName TrustedInstaller
Start-Service -ServiceName TrustedInstaller

@rkttu
Copy link
Member Author

rkttu commented Feb 4, 2023

결제 페이지로 넘어가지 않는 현상의 경우, 인터넷등기소는 IE Mode를 해제해야 하는 것으로 보여 카탈로그를 수정함.
yourtablecloth/TableClothCatalog@579f784

rkttu pushed a commit to yourtablecloth/TableClothCatalog that referenced this issue Feb 4, 2023
@rkttu
Copy link
Member Author

rkttu commented Feb 4, 2023

@rkttu
Copy link
Member Author

rkttu commented Feb 4, 2023

추가 확인 - VC++ 2005 Redist Runtime 설치도 잘 통과되는 것을 확인함.

@rkttu
Copy link
Member Author

rkttu commented Jan 28, 2024

yourtablecloth/TableClothCatalog#52 이슈로 이관.

@rkttu rkttu closed this as completed Jan 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
버그 기능에 이상이 있습니다.
Projects
None yet
Development

No branches or pull requests

1 participant