설치 및 배포를 사용하여 설치 프로그램을 만든 Visual Studio 2013에서 C# Windows 응용 프로그램을 실행하고 있습니다. 이 응용 프로그램에서는 테이블 생성 스크립트, 저장 프로 시저 및 모든 스크립트를 실행하는 데이터베이스 배치 파일이있는 별도의 엔터티로 MySQL 데이터베이스를 사용하고 있습니다.설치 도중 응용 프로그램에 기존 데이터베이스 연결 : 설치 프로젝트
하지만이 데이터베이스 후보를 설치 프로그램에 보내야합니다. 커밋 후 커스텀 액션에서 데이터베이스 배치 파일을 실행하는 것과 같은 몇 가지 옵션을 시도했지만 제대로 작동하지 않았습니다. 배치 파일 실행 방법을 사용하지 않으려는 경우 (설치가 끝날 때 배치 파일을 실행하는 옵션이 없기 때문에) 커밋 시간에이 기존 데이터베이스를 설치 프로젝트에 어떻게 추가 할 수 있습니까?
appconfig에서 연결 문자열을 가져 오는 응용 프로그램 코드에서 연결을 처리하고 있습니다.
<connectionStrings>
<add name="CRSDatabaseString" connectionString="Server=localhost; Database=Tel_CRS; Uid=root; Pwd=root123; Persistsecurityinfo=True;" />
<add name="CSSDatabaseString" connectionString="Server=localhost; Database=Tel_css; Uid=root; Pwd=root123; Persistsecurityinfo=True;" />
</connectionStrings>
그리고 응용 프로그램 코드에서 SQL 연결을 다음과 같이이 비주얼 스튜디오 사용자 지정 작업에서 작동하지 않을 수 있습니다 몇 가지 이유가 있습니다
public MySQL_Connection()
{
String conn ="";
if (Bootstrapper.InspectionTarget=="css")
conn = ConfigurationManager.ConnectionStrings["CSSDatabaseString"].ConnectionString;
else
conn = ConfigurationManager.ConnectionStrings["CRSDatabaseString"].ConnectionString;
Db_conn = new MySqlConnection(conn);
Db_conn.Open();
}
위의 SQL 연결 코드는 응용 프로그램 exe에서 왔지만 SQL 스크립트를 실행하는 모든 논리는 설치 관리자 클래스에 있습니다. 마지막 단락에서 설치 관리자 클래스가 ONBEFOREINSTALLATION()을 실행하도록 설정 했습니까? 하지만 지금은 SQL 연결 코드도 Installer 클래스에 추가했습니다. – Puneeth
Visual Studio 사용자 지정 작업은 모든 파일이 설치된 후에 실행되므로 "설치 전"은 어떤 일이 발생했는지에 대한 오해의 소지가있는 설명입니다. 또한 DB에 연결하는 오류에 대해 아무 말도하지 않았지만 액세스가 허용되지 않은 사용자에 대한 오류가 발생하면 설치 관리자 클래스 코드가 Everyone 설치에서 시스템 계정으로 실행되기 때문에 가능성이 높습니다. . – PhilDW