스마트 클라이언트 (Smart Client)를 배포하고 사용하다보면 Resource에 대한 권한 설정문제로 제대로 실행 안되는 경우가 있다.
특히 오라클 클라이언트와 SQL 클라이언트를 사용한 경우 더욱 그러하다.
그렇게 개발하면 안되겠지만... 아무튼 개발했다면 다음과 같이 사용할 수는 있다.

첫째, ".bat" 파일을 만들어서 DOS창으로 실행하는 방법
이 방법은 여기 포스팅된 글 참조 : http://www.wolfpack.pe.kr/106

둘째, 프로그램내에서 환경설정 등으로 실행하게 하는 방법

-전략-
using System.Security;
using System.Security.Policy;
-중략-
private void SetSecurity(){
            // Machine(Local) 영역을 접근한다.
            const string userPolicyLevel = "Machine";
            PolicyLevel level = null;
            System.Collections.IEnumerator ph = System.Security.SecurityManager.PolicyHierarchy();

            //Machine 레벨을 가져온다.             while (ph.MoveNext())             {                 level = (PolicyLevel)ph.Current;                 if (level.Label == userPolicyLevel)                     break;             }

            // 이미 추가가 되었는지 확인한다.             foreach (CodeGroup group in level.RootCodeGroup.Children)             {                 if (group.Name == "MineService")                 {                     System.Windows.Forms.MessageBox.Show("보안설정이 이미 적용되어 있습니다.", "알림");                     return;                 }

            }             //권한생성             NamedPermissionSet permissionSet = new NamedPermissionSet("FullTrust");             PolicyStatement policyStatement = new PolicyStatement(permissionSet);             //URL멤버쉽 생성             IMembershipCondition membership = new UrlMembershipCondition(@"http://10.20.30.40/*");             //코드그룹에 추가             UnionCodeGroup cg = new UnionCodeGroup(membership, policyStatement);             //이름생성             cg.Name = "MineService";             cg.Description = "내꺼보안설정";             // 그룹추가             level.RootCodeGroup.AddChild(cg);             //적용             System.Security.SecurityManager.SavePolicy(); }

2008/07/23 18:40 2008/07/23 18:40
일전에 몇번 Clickonce 제작과 IIS에서 배포하는 짧은 글을 남겼는데 아파치에서는 사용이 불가능한지에 대한 의문이 생겼었다.
그래서 직접 아파치 깔고 설정을 IIS와 같이 해줬더니.. 이거 왠걸?

잘작동한다!

먼저 아파치가 설치된 폴더 밑에 ".htaccess"라는 놈을 찾자.

그리고 다음과 같이 추가하자.

AddType application/x-ms-application application
AddType application/x-ms-manifest manifest
AddType application/octet-stream deploy

이것으로 아파치 설정 끝! 아파치를 재시작하고 IE로 붙어서 제대로 다운되는지 확인하면 끝!

파이어 폭스를 통해 실행할때는 Clickonce plugin을 추가한다.
제작자 홈피는 http://www.softwarepunk.com/ffclickonce/
다운로드는 https://addons.mozilla.org/en-US/firefox/addon/1608

2007/10/31 22:14 2007/10/31 22:14
지난번에 쾌속으로 스마트 클라이언트를 만들어 보았다.
(관련글 : http://www.wolfpack.pe.kr/103)

* 다음과 같이 하는 방법도 있고 코딩으로 처리하는 방법도 있다.
(http://www.wolfpack.pe.kr/265 참고)

오늘은 가장중요한 배포이다.
(스마트 클라이언트는 서버에서 다운로드 받은 "dll"이나 "exe"파일이 로컬에서 실행되는 것이라는것만 알고 보도록 하자.)

1. 서버
서버쪽은 MIME타입을 제대로 설정해줘야 익스플로러가 제대로 작동한다.
IIS등록정보에서 "MIME형식"을 클릭해서 활성화 시키자.
(예제는 가상사이트의 등록정보로 실재와 다를수 있다.)
사용자 삽입 이미지
"새형식"을 클릭한후 ".dll"파일이면 확장자에 ".dll"을 입력하고 MIME형식에는 "application/octet-stream"이라고 설정하자.
".exe"는 "application/x-msdownload"라고 설정하면 된다.
사용자 삽입 이미지
사용자 삽입 이미지
이것으로 서버쪽은 끄읏!

2. PC설정
PC는 보안설정을 위해 "caspol.exe"라는 넘을 사용한다.
.NET 2.0에서는 "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\"폴더에 있으니 이녀석을 찾아서 DOS창에서 다음과 같이 입력후 실행하면 "yes/no"둘중에 하나를 선택하라고 뜨는데 우리야 뭐 무조건 깔아야 하니 그냥 yes쳐주자.

"caspol.exe -machine -addgroup All_Code -url http://10.250.30.181/* Everything -n SKCC"

사용자 삽입 이미지
실행후의 모습인데 참으로 아름답지는 않지만... ㅡㅡ;;
아무튼 제대로 적용됐단다.

이렇게 하면 실행에는 문제가 없을 것이다. 더 추가적으로 "caspol.exe"에 대해 알아보면 이녀석이 사용하는 인자를 분석해보면 다음과 같다.

"-machine"이라고 된부분은 "-en", "-m", "-u"로 대체가능하다.
각각 enterprise, machine, user를 뜻한다. 즉, 대상범위이다.

"-addgroup"이라고 된녀석은 대상 코드를 이야기하고
다음의 구조중 하나에 추가하란 의미이다.
-All_code -+- MyComputer (내컴퓨터에서 실행)
                +- Intranet (인트라넷에서 실행)
                +- Trusted (신뢰할 수 있는 사이트에서 실행)
                +- Internet (인터넷에서 실행)
                +- untrusted (신뢰하지 않는 사이트에서 실행)
"-url"은 "-site","-zone","-url"등으로 대체될 수 있고 다운로드 받는 곳의 조건을 표현하고 있는데 인터넷에서 받을것이니 그냥 "-url"로하자. 요넘 뒤에 있는것이 "http"나 "ftp"로 시작되는 인터넷 표준 주소이다.
주소바로 뒤에 보이는 "Everything"은 다음과 같은 체계로 나뉜다.
-FullTrust
-SkipVerification
-Execution
-Nothing
-Localintranet
-internet
-Everything
다시말해 권한인데 "Everything"은 권한을 다 주는 거다. (PC포맷시켜도 된다. ㅡㅡ;;)
그다음이 FullTrust이며 이렇게 주루루룩 권한이 낮아져서 Nothing이 되면 아무것도 안된다.

그리고 나서 나오는 것이 "-n"인데 이녀석은 이렇게 설정하는 코드 그룹의 이름으로 여기서는 SKCC로 했다. (왜? 그냥~ 사실 나는 SKC&C라는 회사 다닌다.. ㅡㅡa)

이제 SDK가 깔려있다면 있을 제어판>관리도구>.net framework 2.0 Configuration으로 가서 확인해보자.
사용자 삽입 이미지
2007/04/27 18:01 2007/04/27 18:01

스마트 클라이언트가 뭔지 궁금하신분은 다른 사이트에서 찾아보시고 뭐 간단히 말해 닷넷판 ActiveX되겠다.

일단 VS2005있으면 좋겠고 없으면 말고다. ㅡㅡ;;

먼저 새로운 프로젝트를 생성하고 다음과 같이 "Windows 컨트롤 라이브러리"로 설정한뒤 이름을 "Simple"이라고 하자.

사용자 삽입 이미지
(잘안보이면 그림을 클릭 함해주면 제대로 보임)
위와 같이 하면 아래와 같이 Simple이라는 폴더가 생성되고 각종 파일이 주루루룩 생긴다.
사용자 삽입 이미지
왼쪽에 쪼끄만하게 회색박스가 생길텐데 거기다가 Button컨트롤하나를 올려놓자.
사용자 삽입 이미지
그리고 "button1"을 더블클릭해서 이벤트를 자동생성하고 코딩창에 "MessageBox.show("Hello World!");"를 입력하자.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace Simple {     public partial class UserControl1 : UserControl     {         public UserControl1()         {             InitializeComponent();         }         //아래 4줄이 새로 추가된 코드임.         private void button1_Click(object sender, EventArgs e)         {             MessageBox.Show("Hello World!");         }         //여기까지임.     } }


이제 "F5"키를 눌러서 디버그 모드에서 테스트 함해보자.
사용자 삽입 이미지

아직까지는 문제없이 잘된다.
이제 원래 폴더 밑에 "Simple\bin\Debug"로 가보면 "Simple.dll"이 생성되어 있을것이다.
이놈을 웹루트로 옮기고 아래와 같이 코딩하고 test.htm으로 저장하자.
<object
    id="Simple"
    classid="Simple.dll#Simple.UserColtrol1"
    width="150" height="150">
</object>


id는 알아서 설정해도 될것이다.
그러나 "classid 속성"은 중요하므로 다음과 같은 룰을 따르자.

"classid = [dll명]#[namespace].[class]"

예제에서보면 "Simple.dll"이니 당근 dll명은 "Simple.dll"이다.
namespace는 C#코드에서 "namespace Simple"라고 된 부분이 바로 해당 dll의 namespace이니 요기서 따오면 "Simple"이 되는 것이다.
Class는 "public partial class UserControl1 : UserControl"라고 된부분에서 따오면 된다.
그래서 class부분은 "UserContol1"이 된것이다.
간단한 공식이니 헷갈리지 말고 ^^

이제 웹서버를 통해 실행해보면 다음과 같이 잘 뜬다.
사용자 삽입 이미지
처음 만들어보는 거라 삽질좀 했다. 왜? 그냥 "test.htm"파일을 더블클릭했더니만 절대 실행안된다. 반드시 웹서버에 Request해서 받도록 하자.
2007/04/23 18:25 2007/04/23 18:25