C#에서 싱글톤 구현할 때

public class CommonUtil
{

    private static CommonUtil instance;

    private CommonUtil() { }

    public static CommonUtil Instance
    {
        get
        {
            lock(syncRoot)  // 멀티스레드에서 원자 상태를 유지하기 위해
            {
               if (instance == null)
               {
                   instance = new CommonUtil();
                }
            }
            return instance;
        }
    }
}




'LivePhoto개발' 카테고리의 다른 글

C# HMAC-SHA1 암호화  (2) 2010.11.09
C# Byte <-> String 문자열 변환  (0) 2010.11.09
환경설정 주의사항  (0) 2010.11.05
플러그인 프로젝트 세팅 순서  (0) 2010.11.05
라이브포토 기본 실행순서  (0) 2010.11.05
using System.Security.Cryptography;

.....


byte[] secretkey = System.Text.Encoding.UTF8.GetBytes("키");

byte[] contents = System.Text.Encoding.UTF8.GetBytes("내용");

HMACSHA1 hmacsha1 = new HMACSHA1(secretkey);

byte[] hashValue = hmacsha1.ComputeHash(contents);

string oauth_signature = Convert.ToBase64String(hashValue);

String -> Byte[] 변환

System.Text.Encoding.UTF8.GetBytes( /*문자열*/ )

Byte[] -> Base64 String 변환

Convert.ToBase64String( /*Byte배열*/ )

'LivePhoto개발' 카테고리의 다른 글

C# 싱글톤 구현 및 클래스 다이어그램  (0) 2011.01.13
C# HMAC-SHA1 암호화  (2) 2010.11.09
환경설정 주의사항  (0) 2010.11.05
플러그인 프로젝트 세팅 순서  (0) 2010.11.05
라이브포토 기본 실행순서  (0) 2010.11.05

1. Setup 관련된 리소스(wxs, bmp, rtf 파일) 에 대한 설정
- 출력 디렉터리로 복사 = 변경된 내용만 복사로 지정


2. 디버깅이 제대로 연결 안될경우
- 프로젝트 > 설정 > 디버그 > 시작 외부 프로그램 을 라이브포토갤러리로 설정
- 도구 > 옵션 > 디버깅 > 일반 > 소스 파일이 원래 버전과 정확하게 일치 함 체크 해제

'LivePhoto개발' 카테고리의 다른 글

C# HMAC-SHA1 암호화  (2) 2010.11.09
C# Byte <-> String 문자열 변환  (0) 2010.11.09
플러그인 프로젝트 세팅 순서  (0) 2010.11.05
라이브포토 기본 실행순서  (0) 2010.11.05
persistXml, sessionXml  (0) 2010.11.05
1. C# > Windows Form 프로젝트 선택

2. 참조에 Microsoft.WindowsLive.PublishPlugins 라이브러리 추가 (Program Files 내 live 설치 폴더에 dll 추가)

3. 프로젝트 > 설정 > 응용프로그램 > 출력 형식 > 클래스 라이브러리로 변경

4. wxs 파일 생성(wix 프로그램 설치 필요) - 설치 패키지 프로그램
- 최소 설정


<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <?define File_Name='test1.dll' ?>
  <?define Product_Name='test' ?>
  <?define RegistryKey_ClassName='test1.PublishPlugin' ?>
  <?define Component_Guid='D11E3C5F-0451-4e8a-BB2E-8B66AA07A37F' ?>
 
  <Product Id="677a7ac3-6e9b-4531-8a61-c31acc301d27" Name="Test" Language="1033" Version="1.0.0.0" Manufacturer="Test" UpgradeCode="ae949a2b-1fcd-4abe-bf47-1eb923575de1">
    <Package InstallerVersion="200" Compressed="yes" />
    <Property  Id='ALLUSERS' Value='1' />
   
    <!-- 아이콘 설정인듯 -->
    <Icon Id='MyIcon' SourceFile='$(var.dllpath)\$(var.File_Name)' />
    <Property Id='ARPPRODUCTICON' Secure='yes' Value='MyIcon' />
    <!-- 프레임워크 세팅-->
    <PropertyRef Id="NETFRAMEWORK20"/>
    <Condition Message="Windows Live Photo Gallery plug-ins require the .NET Framework 2.0 or higher.  Please download and install the latest version from http://www.microsoft.com/net/DownloadCurrent.aspx">
      Installed OR NETFRAMEWORK20
    </Condition>
   
    <Media Id="1" Cabinet="MySetup.cab" EmbedCab="yes" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder"   Name='PFiles'>
        <Directory Id="INSTALLLOCATION" Name="Test">
           
          <Component Id="ProductComponent" Guid='$(var.Component_Guid)'>
           
            <File Id="PluginDLL" Name="$(var.File_Name)" Source="$(var.dllpath)\$(var.File_Name)"   DiskId="1" Vital='yes' />
           
            <RegistryKey Root='HKLM' Key='Software\Microsoft\Windows Live\PublishPlugins' Action='create'>
             
              <RegistryKey Key='$(var.Product_Name)' Action='createAndRemoveOnUninstall'>
                <RegistryValue Name='AssemblyPath' Type='string' Value='[INSTALLLOCATION]$(var.File_Name)'/>
                <RegistryValue Name='ClassName' Type='string' Value='$(var.RegistryKey_ClassName)'/>
                <RegistryValue Name='FriendlyName' Type='string' Value='$(var.Product_Name)'/>
                <RegistryValue Name='IconPath' Type='string' Value='[INSTALLLOCATION]$(var.File_Name),-32512'/>
              </RegistryKey>
             
            </RegistryKey>
          </Component>
        </Directory>
      </Directory>
    </Directory>
   
    <!-- 설치페이지인듯 -->
    <Feature Id="ProductFeature" Title="test" Level="1" Description='The complete package' ConfigurableDirectory='INSTALLLOCATION'>
       <ComponentRef Id="ProductComponent" />       
    </Feature>
   
  </Product>
</Wix>

5. 프로젝트 > 설정 > 빌드 이벤트 > 빌드 후 이벤트 명령어 줄 에 패키지 생성 스크립트 추가

"$(ProgramFiles)\Windows Installer XML v3\bin\candle.exe" -nologo -ddllpath=. -dsetuppath=Setup "$(ProjectDir)\test.wxs"
"$(ProgramFiles)\Windows Installer XML v3\bin\light.exe" -nologo -ext WixUIExtension -ext WixNetFxExtension test.wixobj -cultures:en-us

 
6. 빌드 후 생성 파일을 설치

6. 디버그는 해당 dll 위치에 디버그 위치를 변경

7. IPublishPlugin를 상속받는 클래스 생성

8. ShowConfigurationSettings 메소드내 생성된 form을 생성
 public class PublishPlugin : IPublishPlugin
    {

....................

public bool ShowConfigurationSettings(IWin32Window parentWindow, XmlDocument sessionXml, XmlDocument persistXml, IPublishProperties publishProperties)
        {
            // Show the configuration dialog to the user and return the result.
            return Form1.GetSessionInfo(parentWindow, sessionXml, persistXml);
        }


9. 해당 form내 Show를 시켜주는 로직 추가


public partial class Form1 : Form
    {

 public static bool GetSessionInfo(IWin32Window parent, XmlDocument sessionXml, XmlDocument persistXml)
        {
            Form1 pf = new Form1();
            pf.sessionXml = sessionXml;
            pf.persistXml = persistXml;
return pf.ShowDialog(parent) == DialogResult.OK;
        }
       

'LivePhoto개발' 카테고리의 다른 글

C# HMAC-SHA1 암호화  (2) 2010.11.09
C# Byte <-> String 문자열 변환  (0) 2010.11.09
환경설정 주의사항  (0) 2010.11.05
라이브포토 기본 실행순서  (0) 2010.11.05
persistXml, sessionXml  (0) 2010.11.05

ShowConfigurationSettings
- 사진을 선택 후 처음 실행되는 메소드인듯
- parentWindow, sessionXml, persistXml 등을 입력 받아 form에 저장함


PublishItem
- 사진 선택 후 ShowConfigurationSettings에서 결과가 true인 경우 실행되는 메소드
- 아이디와 토큰등을 통해 세션 쿠키를 생성하여 upload 로직을 실행함
- Progress Bar등을 통해 진행사항을 표시함


LaunchPublishResults

-  업로드 완료 후 업로드 확인을 클릭시 실행되는 메소드


ShowSummaryInformation, HasSummaryInformation, HasPublishResults
- 업로드한 결과에 대한 관련 메소드

'LivePhoto개발' 카테고리의 다른 글

C# HMAC-SHA1 암호화  (2) 2010.11.09
C# Byte <-> String 문자열 변환  (0) 2010.11.09
환경설정 주의사항  (0) 2010.11.05
플러그인 프로젝트 세팅 순서  (0) 2010.11.05
persistXml, sessionXml  (0) 2010.11.05

persistXml
- 사용자의 기본적인 정보를 저장하여 플러그인을 시작할때 xml형태로 플러그인 프로그램에 넘기는 역활을 한다. 따로 저장할 필요 없이 xml을 수정시 바로 라이브포토에 저장됨. oauth방식을 사용할때 id와 nsid, 토큰등을 저장

sessionXml
- 사진에 관련된 정보를 담고있다.

'LivePhoto개발' 카테고리의 다른 글

C# HMAC-SHA1 암호화  (2) 2010.11.09
C# Byte <-> String 문자열 변환  (0) 2010.11.09
환경설정 주의사항  (0) 2010.11.05
플러그인 프로젝트 세팅 순서  (0) 2010.11.05
라이브포토 기본 실행순서  (0) 2010.11.05

+ Recent posts