2011-07-27 4 views
1

사용자 지정 작업을 사용하여 설치 관리자를 수정하려고하지만 C#의 새로운 기능입니다. 내가 뭘 하려는지 설치가 끝나면 배치 스크립트를 실행하는 것입니다. 다음 설치기 클래스를 사용하고 있습니다.Visual Studio 2008에서 사용자 지정 작업 오류

namespace PostInstall 
{ 
    [RunInstaller(true)] 
    public partial class Installer1 : Installer 
    { 
     public Installer1() 
     { 
      InitializeComponent(); 

      System.Diagnostics.Process.Start("PostInstall.bat"); 
     } 
    } 
} 

프로젝트 이름이 PostInstall 인 경우 * .cs 파일에 위의 코드가 포함되어 있습니다. 프로젝트는 this link의 "사용자 지정 작업 만들기"섹션에 따라 생성됩니다. 설치 프로젝트에서 링크에 설명 된대로 Install & 커밋 노드에 PostInstall 프로젝트의 기본 출력을 추가했습니다. 다음과 같은 오류가 수신 설치가 끝나면 그러나

: 인스턴스 PostInstall.Installer1를 만들 수 없습니다

오류 (1001) 설치 유형 -> 예외가 호출 대상이 throw되었습니다 . -> 시스템이 지정된 파일을 찾을 수 없습니다.

설치 디렉토리에 PostInstall.bat이 있는지 확인했습니다. 왜 오류가 발생하고 어떻게 해결할 수 있습니까? 이 사건은

+0

Committed 이벤트에서 PostInstall.bat를 호출하는 이유는 무엇입니까? – CharithJ

+0

다음 다른 오류가 발생합니다. 내 생각은 생성자가 호출 된 다음 일괄 처리가 실행되어야하는 경우입니다. – Donotalo

답변

2

내가 설치 디렉토리가 자동으로 설치 프로그램이 실행되는 디렉토리 아니라고 생각 관리자로의 .msi를 실행하려고에 불가능하면

+0

배치 파일은 설치 디렉토리의 권한 만 변경합니다. 배치 채우기가 설치 디렉토리에서 호출 될 것이라고 가정했습니다. 설치 프로그램이이 파일을 복사합니다. – Donotalo

+0

@Donotalo - 도움이 되었으면 좋겠다. "내가 추측했다"는 사실이 세상에서 가장 위험한 문구 중 하나라는 것을 알았다면 앞으로 더 많은 도움이 될 것입니다! – AAT

+0

전체 기술을 대체했습니다. 나는 C, C++ 및 win32 배경을 가지고있다. 나는 커스텀 액션을 C++ 프로그램으로 대체하고 그것을 셋업 프로젝트의 커밋 노드에 추가했다. 그것은 효과가 있었다. :) 링크가 끔찍하고 그것을 공유해 주셔서 감사합니다. 나는 그 과정에서 많은 것을 배웠다. :) – Donotalo

0

은 이상적으로 사용자 지정 작업은, 네이티브 코드로 작성해야한다 따라서 Process.Start("PostInstall.bat")은 배치 파일을 찾을 것이라고 가정 할 수 없습니다.

This DevCity article은이 항목에 대한 소개로서 배치 파일의 전체 경로 이름을 만들 수 있도록 사용자 지정 작업 개체에 전달되는 설치 디렉터리를 얻는 방법을 알려줍니다.

배치 파일을 실행하는 동안 어떤 일이 생길지 생각해 보셨습니까? 설치가 끝날 때까지 기다렸다가 설치의 다음 단계로 진행 하시겠습니까?

관련 문제