이글에서 사용한 방법들은 모두 무용지물이 되었다.
webview를 사용한 이유는 WebcontentsView에서는 Electron의 Renderer Process와 통신이 불가능하다고 판단하였기 때문이다.
그래서 webview를 채택하여 webview의 console.log를 통해 액션상태만을 전달하고 Electron의 Renderer Process에서는 액션 상태를 읽은 후 의도된 상태를 실행시키는 방식으로 개발하였다.
아니 그런데... 이게 다 필요가 없었음..ㅜㅜ
let mainWindow: BrowserWindow | null = null;
export const createMainWindow = (): void => {
elog.verbose("[Main] create main window");
if (mainWindow == null || mainWindow.isDestroyed()) {
mainWindow = new BrowserWindow({
height: 600,
width: 1400,
webPreferences: {
preload: PRIMARY_WINDOW_PRELOAD_WEBPACK_ENTRY,
webSecurity: false,
webviewTag: true,
nodeIntegration: true,
contextIsolation: true, // contextBridge로 안전하게 IPC (보안 강화)
},
});
mainWindow.loadURL(primaryConstants.ONTOL_CLINIC_WEB_ADMIN_PATH);
if (!app.isPackaged) {
mainWindow.webContents.openDevTools();
}
} else {
mainWindow.show();
}
};
그냥 여기서 내가 개발 후 배포한 프로젝트 URL을 로드하면 됨..
어떻게 되냐면 배포한 URL의 HTML, CSS, Javascript 가 Renderer Process내부로 들어온다고 생각하면 된다.
그렇기에 배포한 나의 Vite 프로젝트 코드에서는 Electron의 window 객체에 접근할 수 있게된다.
그러면 뭐 서로 메세지를 주고 받고 어쩌고 난리부루스가 필요없다.
그냥 직접 Electron Renderer Process의 window 객제체 접근하여 하고싶은거 하면 된다...
네 그렇습니다.
삽질 기록 끗