2017-10-02 8 views
0

Visual Studio에서 설치 프로그램을 만들고 있는데, 문제가 있습니다.sfx 경로가 예상대로 작동하지 않습니다.

엄청난 양의 파일을 일부 폴더에 복사하려고합니다 (내 문서 -> 테스트). 그래서 WinRAR로 자동 압축 해제 .exe 파일을 만들었습니다. 해당 파일을 두 번 클릭하면 자동으로 "FILES"폴더가 해당 폴더와 동일한 폴더에 만들어지고 자동으로 해당 폴더의 모든 파일이 추출됩니다.

"D : \ Documents \ TEST"에있는 files.exe 파일을 두 번 누르면 "D : \ Documents \ TEST \ FILES"에 모든 파일이 추출됩니다.

설치 프로젝트에서 나는 다음을 수행했습니다 : - 파일 시스템에 "User 's Personal Data Folder"폴더를 추가하고 "TEST"폴더를 만든 폴더에 files.exe를 추가했습니다. 커밋 섹션에서 사용자 정의 액션을 생성하여 해당 files.exe 파일을 실행했습니다.

그러나 응용 프로그램을 설치할 때 "D : \ Documents \ TEST"폴더가 올바르게 만들어지면 .exe 파일이 거기에 복사되지만 어떤 이유로 C : \ 위치에 "FILES"폴더가 만들어집니다. Windows \ SysWOW64를 열고 "C : \ Windows \ SysWOW64 \ FILES"에있는 파일을 추출합니다.

어떻게 방지 할 수 있습니까?

도움을 주셔서 감사합니다.

답변

0

MSI 기반 설치에서 사용자 지정 작업으로 뭔가를 실행하는 것은 대화 형 사용자 환경에서 동일한 코드를 실행하는 것과 동일하지 않습니다. 사용자 지정 작업을 실행할 때 작업 디렉터리는 일반적으로 코드를 실행하는 Windows 설치 관리자 서비스에서 제공됩니다. 작업 디렉터리가 실행 파일이 시작된 위치와 자동으로 동일하게 만드는 마법은 없습니다. 이는 모든 코드가 파일 위치의 정확한 경로를 지정하고 작업 디렉토리에 의존하지 않아야 함을 의미합니다. 따라서 프로그램의 코드가 프로세스의 작업 디렉토리 (32 비트 Windows 시스템 위치)에 생성되는 "FILES"디렉토리를 생성하는 것처럼 보입니다.

코드를 작성했는지 모르겠으며 의견이 환경 변수를 참조하는 이유가 명확하지 않습니다. 그러나 모든 .NET 프로그래머는 Environment.SpecialFolder.MyDocuments를 사용합니다. 당신은 당신이 목록에서 PersonalFolder 속성을 요청 위치를 Windows Installer를 요청하려면 다음

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx#system_folder_properties

당신의 질문은 당신이 사용자의 개인 데이터 폴더 인 "내 문서"폴더에 설치 말한다 (파일 시스템보기)의 목록에서 확인하십시오. 따라서 설치 프로젝트의 해당 폴더에 설치해야합니다. 코드가하는 일에 대해 더 명확히하고 정확히 사용자 정의 동작으로 호출하는 방법에 대한 답변이 있으면보다 철저한 답변을 얻을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 내가 아는 한 "내 문서"폴더에는 환경 변수가 없으므로 내 sfx 파일에 대한 해당 폴더의 정확한 위치를 얻는 방법을 모르겠습니다. 어떤 아이디어? –