2010-02-26 6 views
5

Windows 7 (MSI 5.0)에는 MSIFASTINSTALL이라는 속성이있어서 설치 프로그램의 성능이 향상됩니다. 그렇지 않으면 속성 DISABLEROLLBACK을 설정하여 롤백 옵션을 해제 할 수 있습니다. 이 속성은 이전 버전의 MSI 5.0에서도 사용할 수 있습니다.Wix msi 설치/제거 성능 향상

설치 환경을 개선하기 위해 지식을 공유하십시오. 또한 Uninstall의 성능을 향상시킬 수있는 올바른 방법을 찾을 수 없습니다. 우리는 거대한 파일/폴더 세트 (7 만 개 이상)와 35000 같은 구성 요소를 사용합니다. 이는 파일 비용 계산 프로세스에 매달리 며이 지연을 피하는 방법을 모릅니다. 언젠가는 XP 또는 Vista 컴퓨터에서 제거 이상 2 ~ 3 시간 동안 중단

편집 : 내가 그랬어 큰 파일 세트가있는 폴더를 압축하는 의해 설치 내에서 일부 해킹과 크리스토퍼 말한 것처럼 구성 요소의 크기를 감소 . 그것은 성능을 크게 향상 시켰습니다. yes ofcourse, 나는이 개념을 수행하여 MSI 설치 프로그램 패턴을 잃어 버렸고 권장 접근법이 아닙니다. 그러나 패치를 제거/업그레이드 할 때 파일 버전 정보를 원하지는 않습니다.

답변

4

필자의 파일 수는 약 25k 정도이지만 비슷한 상황이었습니다. 그 파일의 대부분은 한 릴리즈에서 다른 릴리즈로 변경되지 않은 아이콘이었습니다. 주요 릴리스 (2 년에 한 번)만이이 영역을 일부 변경시킬 수 있습니다. "빠른 & 더티"솔루션은 이러한 아이콘을 압축하여이 단일 파일을 설치에 포함 시켰습니다 (구성 요소가 아닌 MSI와 나란히 파일). 설치 중에이 ZIP은 백그라운드 스레드에서 추출되었으며 RemoveFile 테이블은 설치 제거시 아이콘을 삭제하는 데 사용되었습니다. 20k 아이콘을 별도의 구성 요소로 설치하는 것보다 훨씬 빠릅니다. 좋은 해결책은 주요 응용 프로그램 개발자가 모든 20k 아이콘을 20 ​​개의 zip 아카이브에 집어 넣도록 설득하는 것이 었습니다. 이제이 20 개의 zip 파일은 일반 MSI 구성 요소로 설치되며 응용 프로그램은 필요할 때 아이콘을 추출하여 캐시하는 방법을 알고 있습니다.

롤백을 사용하지 않는 것이 좋습니다. 설치 시간을 상당히 절약 할 수 있지만 표준 롤백 옵션이 손실됩니다.

롤백 기능으로 인해 설치를 제거하는 데 시간이 오래 걸립니다. 내가 이해하는 방식으로, MSI는 모든 단일 파일의 복사본을 생성 한 다음 모든 단일 파일을 제거하고 성공할 경우 백업 된 모든 파일을 삭제합니다. 따라서 설치 제거 시간은 설치 시간의 약 3 배입니다. 구성 요소 당 1 개의 파일을 가지도록 기본 옵션을 사용했을 때도 동일한 문제가 발생했습니다. 권장 사항이지만 뛰어난 사례를 다룰 경우 상반 관계를 설정해야합니다.

희망 사항은 약간의 문제를 해결합니다.

+0

Yan, 나는이 개념에 대해 더 분명하게 해준 답을 정말 고맙게 생각합니다. 내 경우에는 롤백 옵션이 필요하지 않으며 지금까지 롤백 옵션이 필요한 경우를 만난 적이 없습니다. 어쨌든, 나는 너에게 모든 사람들의 제안을 시도 할 것이다. – sankar

+0

캐시 된 아이콘 파일을 제거하는 방법을 설명 할 수 있습니까? – sky

+0

이 경우 캐시 된 아이콘 파일은 Windows Installer가 설치하지 않은 파일이며 아무것도 알지 못합니다. 따라서, 그것은'RemoveFile' /'RemoveFolder' 엘리먼트의 집합이나 커스텀 액션이 될 수 있습니다. 첫 번째 변종을 선호합니다. –

2

앱의 성능을 향상시키는 가장 좋은 방법은 파일 및 구성 요소의 수를 줄이는 것입니다. 성능을 향상시키기 위해 MSI에 몇 가지 조정할 수 있지만, 파일/구성 요소의 과도한 수는 핵심적인 문제이며 성능 향상에 필요한 요인이 될 것입니다. 왜 70k 파일을 설치해야합니까?

+0

답변 해 주셔서 감사합니다. 그것을 줄이기 위해 요소를 줄이기 위해 노력할 것입니다. 튜토리얼 목적을 위해 엄청난 양의 HTML 파일과 이미지를 제공해야합니다. – sankar

+2

내 일반적인 설치에는 약 15,000 개의 파일이 있으며 이것들은 클라이언트 응용 프로그램입니다. 게임 업계에서는 수많은 파일을 설치하는 것이 매우 쉽습니다. 서버 측 (특히 웹 앱)에서는 수만 명에 도달하는 것이 매우 쉽습니다. 나는 웹 클라이언트에 Infragistrics를 추가하는 것만으로 5,500 개 이상의 파일을 추가하는 것을 한 번 관찰했습니다. 웹 응용 프로그램을 감싸 주려고하는 사람은 누구나 복잡하고 방대한 크기의 설치 프로그램을 신속하게 만들 수 있습니다. MS가 제공하는 "자체 호스팅"MSDN 웹 사이트를 생각해보십시오. –