본문 바로가기
[ Program ]/C#

vsto2003(office2003) vsto2007(office2007) 버전에 상관없이 실행되는(Combine) add-in 프로젝트 만들기

by 관이119 2012. 11. 21.

vs2008버전에서 제작된 내용입니다.(.net framework3.5 사용)

여러문서를 찾아 봤지만 실제 해답을 찾을수가 없어서 고민끝에 2003과 2007버전을 두개 동시에 설치되게 만들면 어차피 본인버전에 맞는 add-in 만 실행되므로 그렇게 해보자고 해서 만든 내용입니다.

처음 설정부터 설치파일구성까지 전부 담고자 노력했습니다. 저같은 초보분들에게 도움이 됐으면 좋겠습니다^^

이름이나 경로등에 영향을 받는 부분이 많으니 이름도 그대로 하시는게 좋습니다~

 

 

 

시작전 vs의 상단의 메뉴중에 옵션창에 들어가서 프로젝트 업그레이드의 설치된 offfic 버전으로 항상 업그레이드에 체크를 빼준다.

 

 

 

새프로젝트로 일단 엑셀2003 추가기능을 만들어준다.

 

 

위와같이 프로젝트가 생성완료 되었다.

 

 

위와같이 네임스페이스를 바꿔주자.

 

 

네임스페이스를 바꿔주면 에러가 날것이다.

 

 

에러를 무시하고 일단 우측의 프로젝트에서 우클릭으로 다시빌드하자.

 

 

프로젝트를 다시 빌드하면 아래 오류 메시지를 타고 Designer 에 들어갈수있다.

 

 

디자이너의 네임스페이스도 위와같이 바꿔주자.

그러면 오류가 모두 사라진다.

 

 

그리고 프로젝트를 다시 빌드하고

 

 

이름이 변경되었으니 기존에 설치프로젝트에 있던 출력을 제거하자.

 

 

제거한후 다시 설치프로젝트에서 우클릭으로 프로젝트 출력을 추가한다.

 

 

위와같은 창이 뜨면 바뀐이름의 프로젝트를 선택하고 기본출력을 선택한다.

 

 

나중에 테스트용으로 볼수있게 테스트메시지박스도 코딩 해주자.

 

 

솔루션에서 다시 프로젝트를 추가한다.

 

 

이번엔 엑셀 2007 애드인으로 프로젝트를 추가하자.

 

 

그럼 이제 위와같이 2003,2007 두개의 프로젝트가 있을것이다.

 

 

일단 2007에도 테스트용 메시지박스를 코딩해주자. 프로젝트의 ThisAddIn.cs 의 코드보기를 누르면 된다.

 

 

그리고 프로젝트를 다시 빌드하고.

 

 

프로젝트 출력을 추가해주자.

 

 

위와같은 창이뜨면 2007로 이번에 만든 프로젝트의 기본출력을 선택하고 확인하면 된다.

 

 

그리고 설치프로젝트에서 파일을 추가해주자.

 

 

위에서 선택한 두개파일 manifeft 파일과 vsto 파일을 추가해주자. 파일위치는 실제 프로젝트경로의 release 폴더에서 찾을수있다.

 

 

이제 위와같이 파일과 기본출력들이 추가되었다.

 

 

엑셀뿐만아니라 워드애드인까지 같이 설치되게 또 프로젝트를 추가하자. 파워포인트같은 다른것들의 애드인까지 추가로 필요하다면 같은 과정을 반복하면된다.

 

 

새프로젝트에서 일단 word2003 추가기능 프로젝트를 추가하자.

 

 

그리고 바로 2007버전도 추가하게 다시 새프로젝트를 추가하자.

 

 

위와같은창이뜨면 이번엔 word2007 추가기능 프로젝트를 추가하자.

 

 

테스트용 메시지박스 코드도 넣어주고

 

 

2003버전에도 마찬가지로 추가해주자.

 

 

2003에도 테스트용 메시지박스 코딩 추가.

 

 

이제 전체 솔루션을 한번 빌드해주자.

 

 

그리고 새로 추가된 프로젝트들의 출력을 추가해주기위해 기존의 인스톨 프로젝트에서 출력을 추가해준다.

word2003 설치용 프로젝트에 추가하면 안된다.(word2003 설치 프로젝트는 나중에 쓰일데가 있으니 헷갈리더라도 지우지말자.)

 

 

word2003 프로젝트 출력을 추가해주고

 

 

같은 방법으로 word2007 의 출력도 추가해주면 위와같은 상태일것이다.

 

 

2007은 manifest 파일과 vsto 파일이 필요하기때문에 새루추가된워드에서 나온 파일 두개를 추가하기 위해 설치 프로젝트에서 파일 추가를 선택해준다.

 

 

위와같이 두개 파일을 추가한다. 마찬가지로 실제 파일 위치는 프로젝트의 release 경로에 있다.

 

 

현재 상황

 

 

참조된 DLL중 2003 과 2007의 DLL 이 다르기 때문에 각자 폴더를 나눠서 분류해주기 위해 파일시스템 편집기로 들어간다.

 

 

각자의 DLL을 각자의 폴더에 넣어주기 위해 폴더를 추가하자.

 

 

버전을따서 폴더를 추가해주고

 

 

메인폴더를 보면 어느DLL 이 어느 버젼용인지 아직은 알기 힘들다.

 

 

그래서 다시한번 빌드를 해주면

 

 

중복되는 DLL이 빨간밑출로 표시된다.

 

 

중복되는 DLL의 속성창에 보면 v11 이라고 표시된다.(v11 은 2003 , v12 는 2007버전 dll이다.)

 

 

중복되는 dll 들의 버전확인후 각각의 버전에 맞게 드래그 해서 폴더에 넣어준다.

 

 

드래그 해서 폴더에 넣으면 폴더안으로 이동되는데 다시 응용프로그램 폴더로 돌아가서 버전확인하고 폴더에 넣어주고 반복한다.

 

 

dll들을 드래그로 모두 각자의 폴더로 나워주면 위와같을것이다.

 

 

2003DLL 폴더

 

 

2007폴더

 

 

레지스트리 편집을 위해 솔루션 프로젝트에서 레지스트리 편집기로 들어가자

 

 

2003 프로젝트 같은 경우는 설치프로젝트에 필요한 레지스트리들이 자동으로 생성된다.

 


위와 같은 경로에 새 키를 만들어주자. 


 

위와같이 2007버전으로 새키를 만들어주자.


 

새로만들어진 키를 선택하고 키안에 값들도 설정해주자.


 

위와같이 값들을 추가해주자.

 

 

현재키에 대해 모두 추가된 상태.


 

Word에 대한 키도 만들어 주기 위해 Office레벨에 새 키를 추가하자.


 

위와같이 Word 키를 만들고 Word 키 내에서도 2003 과 2007 을 위해 새키를 추가하자.


 

일단 키만 추가된 상태.


 

2007로 설정한 키에 위와같이 값을 추가하자.


 

이제 이전에 삭제하지않고 놔뒀던 Word2003 설치 프로젝트를 사용할시간이다. 

Word2003 설치 프로젝트의 레지스트리 편집화면으로 들어가자.


 

위와같은 경로에서 값을 찾는다.


 

방금찾은 Word2003설치 프로젝트의 값들을 그대로 기존 설치프로젝트의 위 경로에 똑같이 추가해준다.


 

그리고 Classes 에서 또 새키를 추가한다.


 

위와같이 추가해주고.


 

추가해준키에 새값을 넣고 속성창에 Name부분을 지워버리자.


 

그러면 위와같이 될것이다. 기본값에 대한 값은 Word2003 설치 프로젝트의 똑같은 위치를 참조해서 그대로 똑같은 값을 입력하면 된다.


 

폴더도똑같이 추가해주고


 

다른키들도 똑같이 추가해주자.


 

첫번째값은 문자열값이 아니라 확장가능한 문자열값 임에 유의하자.(만약에 문자열값으로 해버리면 형식이 달라 실행이 되지않는다.


 

위와같이 같은 경로에서 그대로 값을 가져오고


 

나머지 값들도 Word2003 설치 프로젝트에서 같은위치의 값들을 그대로 설치프로젝트에 같은위치에 같은값들을 추가해주면 된다.


 

같은위치의 같은값추가.


 

같은위치의 같은값추가.


 

이제 레지스트리 값들이 모두 추가됐으면 Word2003설치 프로젝트는 지워버리자.


 

현재까지의 진행상태.


 

이쯤에서 전체 빌드를 한번 실행해주자.


 

설치프로젝트의 이름도 제대로 바꿔주고



설치 프로젝트의 속성창으로 들어가자


 

출력될 파일명도 조절해주고


 

그리고 설치프로젝트를 빌드하자.


 

오피스2003같은 경우는 권한 설정이 필요한데 권한파일을 일단 bat 파일로 만들자

파일은  

CaspolFulltrust.Bat

여기 첨부해놨음.


 

생성되는 msi 파일로 바로 실행해버리면 오피스 2003같은경우는 권한문제가 생기기때문에

방금만든 권한 관련된 bat 파일도 실행될수있게 다시 Install 배치파일을 만들자.


첨부 - 


Install.bat


 

그리고 다시 


Bat_To_Exe_Converter.exe


이파일을 설치해서 위와같은 옵션으로 컴파일해주면 bat 파일을 exe 파일로 바꿀수있다.


 

최종화면(완료)

Install.EXE 를 실행해서 설치하면 된다.

아래 있는것들을 전체 파일들을 하나의 exe 파일로 만들기 위해 알집exe 를 사용하는 화면이다.

참고경로는 다음과 같다.

http://blog.naver.com/altools?Redirect=Log&logNo=150067037624


그리고 사용자의 환경및 버전에 따라 요구파일이 다르기때문에 필수구성요소들 역시 다르다.

하지만 우리는 어느버전에서나 가능하게 하는게 목적이기때문에 필수구성요소를 모두로 하겠다.


O2003PIA.EXE


o2007pia.msi


vstor.exe


위3가지파일은 우리가만든 프로그램이 실행되기전에 클라이언트에 깔려있어야한다.

그런데 오피스2003 이 설치된곳에는 o2007pia.msi  가 설치되지않을것이고 오피스 2007이 깔린곳에는 O2003PIA 가 설치되지않는다.

2010 이 깔린곳에는 둘다 설치 되지않는다.

설치되지않는다고 끙끙대지말고 그냥 설치되는것만 설치하면 우리가만든 프로그램을 실행할수 있다.




 

 

 

 

 

댓글