문제

Wix Installer가있는 일반 기존 Windows Forms 응용 프로그램이 있으며 모든 사용자를 위해 설치됩니다. Program Files 예상대로 폴더. 응용 프로그램은 다음을 사용하여 애드 인을 호스팅합니다 System.addin 프레임 워크.

System.Addin 프레임 워크는 애드 인 파이프 라인 폴더 중 일부에 쓸 필요가 있으므로AddIns, AddInSideAdapters, AddInViews, Contracts 그리고 HostSideAdapters) Add-in을 설치하기에 가장 좋은 장소를 모릅니다. 설치할 수 없습니다 Program Files 사용자는 쓰기 권한이없고 사용자에게 설치하는 경우 Application Data 폴더는 다른 사용자에게는 추가 인이 설치되지 않습니다.

여기에는 상충되는 요구 사항이 있다는 것을 알고 있습니다 (사용자는 다른 사용자의 추가 인을 엉망으로 만들 수 없으며 모든 사용자를 위해 추가 기능을 설치해야하며 모든 사용자가 쓸 수있는 권한이 필요합니다). ?

System.addin Framework가 작성 해야하는 파일이 별도로 저장할 수 없다는 것은 부끄러운 일입니다. Application Data, 그러나 그것은 프레임 워크의 한계 인 것 같습니다.

도움이 되었습니까?

해결책

나는이 질문이 오래 전에 묻는 것을 알고 있지만 ...

환경을 사용해 보셨습니까? specialfolder.commonApplicationData를 사용해 보셨습니까?

Vista/Windows 7 에서이 폴더는 다음과 같습니다. %ProgramData%. Windows XP에 무엇이 있는지 100% 확신하지는 않지만 아마도 %ALLUSERSPROFILE%.

어쨌든,이 폴더는 모든 사용자에게 읽고 쓰기/쓰기로 허가를 받아야합니다.

회사/애플리케이션 이름에 대한 하위 폴더를 만드는 것을 잊지 마십시오 :

string companyName = "My Company";
string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string path = Path.Combine(folderPath, companyName);

다른 팁

여전히 더 나은 답변을 기대하지만이를 수행하는 유일한 방법은 파이프 라인을 설치하여 파일을 프로그래밍하고 응용 프로그램을 실행할 때마다 응용 프로그램 데이터에 복사하는 것입니다. 그런 다음 System.Addin 프레임 워크를 응용 프로그램 데이터의 파이프 라인 복사본에 표시하여 사용자 프로필에만 쓰려고 시도합니다.

어, "모든 사용자"와 "고도 없음"을 모두 가질 수는 없습니다. System.addin Framework가 무엇인지 정확히 알지 못하지만 사용자 프로세스에서 실행하려는 경우 (일명 : 프로세스와 같은 시스템 서비스가 아님) 사용자 프로필 아래에 작성해야합니다 (ApplicationDataFolder는 좋은 장소입니다). . 그것은 모든 응용 프로그램이 따라야하는 매우 근본적인 규칙입니다. 귀하의 의견에서 제한된 이해를 바탕으로 System.addin Framework가 해당 규칙을 위반하고 있습니다.

그러나 나는 아마도 뭔가를 놓치고있을 것입니다.

Wix 설치 프로그램을 사용해야합니까? 앱을 ClickOnce 솔루션으로 배포하면 모든 파이프 라인을 사용자 애플리케이션 데이터 폴더에 넣습니다. 이런 식으로 각 사용자는 자신의 모듈 목록을 유지할 수 있습니다.

이것은 또한 쓰기 가능한 폴더 제한을 해결할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top