말씀하신 Path.GetTempPath() 경우에는 공식 문서에도 나와 있는 것처럼 Returns the path of the current user's temporary folder.를 반환한다고 합니다.
그래서 경로 자체도 C:\Windows\Temp 경로가 아닌, C:\\Users\\user\\AppData\\Local\\Temp\로 변경되는 것 같습니다.
해당 경로를 얻기 위해서는 Environment.GetEnvironmentVariable("temp", EnvironmentVariableTarget.Machine)로 호출되어야 하는 것 같습니다. 덕분에 System의 Temp를 사용하는 구조를 지양해야 하는 것도 이해하게 되었습니다.
두 경우 모두 별도의 Console 프로젝트에서는 정상으로 동작합니다. 하지만 Installer에서 적용할 경우, 이와 무관하게 다운로드가 수행되지 않았습니다. 아마도 Installer를 통해서 동작하는 경우에는 폴더 경로에 대한 변경을 제한하는 것 같은데… 확실치 않습니다.
설치를 하는 중에 인스톨러에서 어떤 프로그램을 실행해서 미리 환경 설정을
한다는 건가요?
그런 경우 설치 도중의 파일은 임시 폴더에 있기 때문에 폴더 접근이 꼬일 수 있습니다.
그 외에도 다양하게 문제가 발생할 수 있을 것이고 지금 계속 비슷한 질문을 하시게 되는
원인이 거기에 있는 것 같은데요.
조언주신대로 로깅을 적용하여 시도하였습니다. C:\Users\user\Desktop>msiexec /i ./SetupApp.msi /L*V "everylog.log"로 실행하였지만, 역시 인증서로 self-sign하지 않은 프로그램이라 그런지 로깅을 할 수 없는 것 같습니다.
위 공유해주신 관련 문서에 보면
프레임워크 버전에 따른 지원 수준이 차이나는 것으로 보입니다.
Framework Version
Default Protocols
4.5 and earlier
SSL 3.0, TLS 1.0
4.6.x
TLS 1.0, 1.1, 1.2, 1.3
4.7+
System (OS) Defaults
For the older versions, your mileage may vary somewhat based on which .NET runtimes are installed on the system. For example, there could be a situation where you are using a very old framework and TLS 1.0 is not supported, or using 4.6.x and TLS 1.3 is not supported.
We recommend that you:
Target .NET Framework 4.7 or later versions on your apps. Target .NET Framework 4.7.1 or >later versions on your WCF apps.
Do not specify the TLS version. Configure your code to let the OS decide on the TLS version.
Perform a thorough code audit to verify you’re not specifying a TLS or SSL version.
제가 하려는 말은 코드추가로 해결이 됐지만
혹 target framework를 .net 4.7로 올려도 해결되지 않을까해서 글 남겨봅니다
말씀하신대로 현 IntialSetupApp는 Class Library로 생성하였습니다. 기본적으로 Class Library 경우에도 System.Web.Services를 지원해주는 것으로 알고 있는데, ServicePointManager처럼 세부 설정이 지원이 안되는 건 가요?