社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)

AILight Banner
AILight Blog

プロフィール

社本@元ネオニート Blog
働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。

目次

Blog 利用状況

記事分類

過去の記事

タグ

2013年3月27日 #

MSDN Library のページタイトルの誤訳

MSDN Library の一部のページタイトルが過剰に翻訳されているのを発見してしまいました。全て、報告済みです。("変換を型にはめて。"が歌のタイトルのようで秀逸です。)


■機械翻訳してはいけないページ

名前を変更します (#import)
http://msdn.microsoft.com/ja-jp/library/3d6zk74w.aspx

除外します (#import)
http://msdn.microsoft.com/ja-jp/library/4wfsht8h.aspx

含めます ()
http://msdn.microsoft.com/ja-jp/library/4c9hz296.aspx

制限します (C++ AMP)
http://msdn.microsoft.com/ja-jp/library/hh388953.aspx

変換を型にはめて。
http://msdn.microsoft.com/ja-jp/library/d9f2bsy2.aspx

割り当てます。
http://msdn.microsoft.com/ja-jp/library/5bkb2w6t.aspx

使用されていない (C++)
http://msdn.microsoft.com/ja-jp/library/044swk7y.aspx

生の (C++)
http://msdn.microsoft.com/ja-jp/library/h5w10wxs.aspx

プロセス
http://msdn.microsoft.com/ja-jp/library/xs15886w.aspx

プロパティ (C++)
http://msdn.microsoft.com/ja-jp/library/yhfk0thd.aspx

スレッド
http://msdn.microsoft.com/ja-jp/library/9w1sdazb.aspx

コメント (C/C++)
http://msdn.microsoft.com/ja-jp/library/7f0aews7.aspx

コンポーネント
http://msdn.microsoft.com/ja-jp/library/c567zh0d.aspx

使用されていない (C/C++)
http://msdn.microsoft.com/ja-jp/library/c8xdzzhh.aspx

関数 (C/C++)
http://msdn.microsoft.com/ja-jp/library/sctyh01s.aspx

組み込み
http://msdn.microsoft.com/ja-jp/library/tzkfha43.aspx

ループ
http://msdn.microsoft.com/ja-jp/library/hh923901.aspx

アンマネージの管理
http://msdn.microsoft.com/ja-jp/library/0adb9zxe.aspx

メッセージ
http://msdn.microsoft.com/ja-jp/library/x7dkzch2.aspx

最適化します。
http://msdn.microsoft.com/ja-jp/library/chh3fb0k.aspx

セクション
http://msdn.microsoft.com/ja-jp/library/50bewfwa.aspx

警告
http://msdn.microsoft.com/ja-jp/library/2c8f766e.aspx

制限します (C++ AMP)
http://msdn.microsoft.com/ja-jp/library/hh388953.aspx


■訳が適切ではないページ

:登録 登録の可用性 -> 登録: 登録の可用性
http://msdn.microsoft.com/ja-jp/library/e4ty6zey.aspx

:変換 診断 ->変換: 診断
http://msdn.microsoft.com/ja-jp/library/83fxkb9t.aspx

例:を呼び出します。 関数プロトタイプと呼び出し -> 呼び出しの例: 関数プロトタイプと呼び出し
http://msdn.microsoft.com/ja-jp/library/a5s9345t.aspx


■追記 (13/03/29)
"変換を型にはめて。"と"制限します (C++ AMP)"以外は、もう修正されているようです。

posted @ 18:02 | Comment (4)

2012年10月14日 #

CTaskDialog のサンプル - WTL

WTLのCTaskDialog を使って、解像度の変更時に表示される確認ダイアログボックスを
再現してみました。

---
class CConfirmDialog : public CTaskDialogImpl<CConfirmDialog>
{
public:
    CConfirmDialog(HWND hWndParent = NULL) :
        CTaskDialogImpl<CConfirmDialog>(hWndParent)
    {
        this->ModifyFlags(0, TDF_CALLBACK_TIMER);

        this->SetMainInstructionText(L"このディスプレイ設定をそのままにしますか?");

        static TASKDIALOG_BUTTON buttons[] = {
            { TDCBF_OK_BUTTON, L"変更を維持する(&K)" },
            { TDCBF_CANCEL_BUTTON, L"元に戻す(&R)" } };
        this->SetButtons(buttons, _countof(buttons), TDCBF_OK_BUTTON);

        this->SetFooterText(L" ");
    }
    ~CConfirmDialog()
    {
    }

// Overrideables - notification handlers
public:
    void OnDialogConstructed()
    {
    }

    void OnCreated()
    {
        ::SetWindowText(m_hWnd, L"ディスプレイ設定");
    }

    BOOL OnButtonClicked(int /*nButton*/)
    {
        return FALSE; // don't prevent dialog to close
    }

    void OnRadioButtonClicked(int /*nRadioButton*/)
    {
    }

    void OnHyperlinkClicked(LPCWSTR /*pszHREF*/)
    {
    }

    void OnExpandoButtonClicked(bool /*bExpanded*/)
    {
    }

    void OnVerificationClicked(bool /*bChecked*/)
    {
    }

    void OnHelp()
    {
    }

    BOOL OnTimer(DWORD dwTickCount)
    {
        USES_CONVERSION;

        const int MAX_MILLISECOND = 10000;
        if (MAX_MILLISECOND < dwTickCount)
        {
            this->ClickButton(TDCBF_CANCEL_BUTTON);
        }
        else
        {
            const stringClass& strFooterText = thisClass::FormatString(
                _T("%d 秒で前のディスプレイ設定に戻ります。"),
                (MAX_MILLISECOND - dwTickCount) / 1000);
            this->UpdateElementText(TDE_FOOTER, T2W((LPTSTR)(LPCTSTR)strFooterText));
        }

        return FALSE; // don't reset counter
    }

    void OnNavigated()
    {
    }

    void OnDestroyed()
    {
    }
};
---

posted @ 20:06 | Comment (0)

2012年9月26日 #

Python のインストールディレクトリの取得 - バッチファイル

バッチファイルで、Python のインストールディレクトリを取得する方法です。

---
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
    for %%h in ( 3.0 3.1 3.2 ) do (
        for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\%%h\InstallPath" /v "" 2^>nul') do (
            if /i "%%i" == "(Default)" (
                set PythonDir=%%k
            )
        )
    )
)
for %%h in ( 3.0 3.1 3.2 ) do (
    for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Python\PythonCore\%%h\InstallPath" /v "" 2^>nul') do (
        if /i "%%i" == "(Default)" (
            set PythonDir=%%k
        )
    )
)
if /i "%PythonDir:~-1,1%" == "\" (
    set PythonDir=%PythonDir:~0,-1%
)
---

posted @ 19:52 | Comment (0)

2012年9月19日 #

Hyper-V 3.0用 VM のエクスポート - PowerShell

Hyper-V 3.0 のVM を下記の形式のフォルダーにエクスポートする
PowerShell Script を作成しました。簡易的なバックアップとして
使用しています。

D:\Backup\Virtual Machines\<VMName>\YYMMDD.<VMName>

---
$VMName = "Test"
$BaseDirectory = "D:\Backup\Virtual Machines"

Get-VM -Name $VMName | ForEach-Object { $VM_State = $_.State }
if ($VM_State -eq "Running")
{
  #Stop-VM -Name $VMName
  Write-Host $VMName is running.
  return
};

Export-VM -Name $VMName -Path "$BaseDirectory\$VMName"

$FolderName = $(Get-Date).ToString("yyMMdd") + "." + $VMName
Rename-Item "$BaseDirectory\$VMName\$VMName" "$FolderName"
---

posted @ 18:54 | Comment (0)

WinRAR を使ったISO ファイルの展開 - バッチファイル

WinRAR を使ってISO ファイルを展開するバッチファイルを作成しました。
Windows 8 なら、diskpart を使えばマウントできるんでしょうけどね。

---
set ISOFILE=C:\Hoge.iso
set DSTDIR=C:\Hoge

for /f "tokens=1,2,*" %%i in ('%WinDir%\System32\reg.exe query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver" /v "InstallLocation" 2^>nul') do (
     if /i "%%i" == "InstallLocation" (
         set WinRARDir=%%k
     )
)
if not exist "%WinRARDir%\WinRAR.exe" (
    echo.
    echo WinRAR is NOT isnstalled.
    echo.
    exit /b 1
)

start "" /wait "%WinRARDir%\WinRAR.exe" x "%ISOFILE%" "%DSTDIR%\"
if not %ErrorLevel% == 0 (
    echo An error occurd.
    exit /b 1
)
---

posted @ 13:58 | Comment (0)

2012年9月11日 #

Hyper-V 3.0用 VM の作成 - PowerShell

Windows 8/Windows Server 2012 には、Hyper-V 3.0 用にcmdlet が強化されています。
この強化されたcmdletを使って、VM名の フォルダーの下にSnapshot, Virtual Hard Disks,
Virtual Machine フォルダーを、まとめて作成するスクリプトを作成してみました。
(Windows 8 RTM で動作確認しています。)


---
#$BaseDirectory = "H:\Virtual Machines"
$BaseDirectory = Split-Path $MyInvocation.MyCommand.Path

# Please customize following values
$VMName = "Test"
$VMHardDiskDrive_Sizebytes = 127GB
$VMHardDiskDrive_LogicalSectorSize = 4KB
$VMProcessor_Count = 2
$VMMemory_StartupBytes = 2048MB
$VMNetworkAdapter_SwitchName = “Virtual Switch”

New-Item -type directory "$BaseDirectory\$VMName\Virtual Hard Disks"
New-VHD `
    –Path "$BaseDirectory\$VMName\Virtual Hard Disks\$VMName.vhdx" `
     –SizeBytes $VMHardDiskDrive_Sizebytes `
    –LogicalSectorSize $VMHardDiskDrive_LogicalSectorSize `
    –Dynamic

# "Virtual Machine" & "Snapshot" directories are automatically created under $BaseDirectory.
New-VM -name $VMName `
    -path "$BaseDirectory"
Set-VMProcessor $VMName `
    -Count $VMProcessor_Count
Set-VMMemory $VMName `
    -StartupBytes $VMMemory_StartupBytes
Add-VMHardDiskDrive $VMName `
    -path "$BaseDirectory\$VMName\Virtual Hard Disks\$VMName.vhdx" `
    -ControllerType IDE `
    -ControllerNumber 0 `
    -ControllerLocation 0
Connect-VMNetworkAdapter $VMName `
    -SwitchName $VMNetworkAdapter_SwitchName

#Start-VM $VMName
---
 

posted @ 19:38 | Comment (0)

2012年1月6日 #

環境変数の値が数字がどうかを調べる - バッチファイル

バッチファイルでは、以下のようにset /a を使うと数値 (整数のみ)の計算ができます。
下の例では、%HOGE2% には、2 が代入されます。

set HOGE=1
rem set HOGE=aaaa
set /a FUGA=%HOGE% + 1

しかし、%HOGE% に数字以外が代入されている場合、エラーは発生せずに、
%HOGE2% には、1 が代入されます。%HOGE% は0 と見なされるようです。

この仕様は、便利なこともあるかもしれませんが、バグになることも多いかと思います。
そこで、以下のように事前に%HOGE% が数字かどうかを検証して、エラーにすると
良いでしょう。

rem set HOGE=1
set HOGE=aaaa
set /a HOGE2=%HOGE%*1
if not "%HOGE%"=="%HOGE2%" (
 echo 数字ではありません
 pause
 exit /b 1
)
 

posted @ 17:36 | Comment (0)

2012年1月4日 #

4年半ぶりに、WTL 8.1.11324 がリリース!!

4年半ぶりに、WTL 8.1.11324 がリリースされました。もう更新されることは無いのかと
思っていたので、かなり驚きました。DWM とRibbun 対応がメインのようです。

// CDwm
// CDwmImpl<T, TBase>
// CDwmWindowT<TBase> - CDwmWindow
// CDwmThumbnailT<t_bManaged, TBase>
// CDwmThumbnail
// CDwmThumbnailHandle
// CAeroControlImpl

// CRibbonUpdateUI : Automatic mapping of ribbon UI elements
//
// RibbonUI::Text
// RibbonUI::CharFormat
// RibbonUI::ICtrl
// RibbonUI::CtrlImpl
// RibbonUI::CommandCtrlImpl
// RibbonUI::ItemProperty
// RibbonUI::CollectionImplBase
// RibbonUI::CollectionImpl
// RibbonUI::TextCollectionImpl
// RibbonUI::ItemCollectionImpl
// RibbonUI::ComboCollectionImpl
// RibbonUI::CommandCollectionImpl
// RibbonUI::ToolbarCollectionImpl
// RibbonUI::SimpleCollectionImpl
// RibbonUI::CollectionCtrlImpl
// RibbonUI::ToolbarGalleryCtrlImpl
// RibbonUI::SimpleCollectionCtrlImpl
// RibbonUI::RecentItemsCtrlImpl
// RibbonUI::FontCtrlImpl
// RibbonUI::ColorCtrlImpl
// RibbonUI::SpinnerCtrlImpl
//
// RibbonUI::CRibbonImpl
//  CRibbonImpl::CRibbonComboCtrl
//  CRibbonImpl::CRibbonItemGalleryCtrl
//  CRibbonImpl::CRibbonCommandGalleryCtrl
//  CRibbonImpl::CRibbonToolbarGalleryCtrl
//  CRibbonImpl::CRibbonSimpleComboCtrl
//  CRibbonImpl::CRibbonSimpleGalleryCtrl
//  CRibbonImpl::CRibbonRecentItemsCtrl
//  CRibbonImpl::CRibbonColorCtrl
//  CRibbonImpl::CRibbonFontCtrl
//  CRibbonImpl::CRibbonSpinnerCtrl
//  CRibbonImpl::CRibbonFloatSpinnerCtrl
//  CRibbonImpl::CRibbonCommandCtrl
//
// CRibbonFrameWindowImplBase
// CRibbonFrameWindowImpl
// CRibbonMDIFrameWindowImpl
// CRibbonPersist
//
// Global functions:
//   RibbonUI::SetPropertyVal()
//   RibbonUI::GetImage()


■Windows Template Library (WTL) - SourceForge
http://sourceforge.net/projects/wtl/

posted @ 15:53 | Comment (0)

2011年12月30日 #

(ファイル)バージョン文字列を扱うクラス (CVersionStringT) - Windows

"1.0.0.1"や"1.00.000.2"といった(ファイル)バージョン文字列を扱うクラスを、
アップデートしました。

 

---
#pragma once

#include <stdlib.h>
#include <vector>


////////////////////////////////////////////////////////////////////////////////
// CVersionStringT

template <int t_nCount, TCHAR t_chSep = _T('.')>
class CVersionStringT
{
protected:
	typedef CVersionStringTr<t_nCount>								thisClass;
#ifndef _CSTRING_NS
	typedef CString													stringClass;
#else
	typedef _CSTRING_NS::CString									stringClass;
#endif

public:
	CVersionStringT() : m_dwVals(t_nCount)
	{
		this->SetVersion(_T(""));
	}
	CVersionStringT(__in_z LPCTSTR newVal) : m_dwVals(t_nCount)
	{
		this->SetVersion(newVal);
	}
	~CVersionStringT()
	{
	}

public:
	operator stringClass ()
	{
		return thisClass::GetVersion();
	}
	thisClass &operator = (__in_z LPCTSTR newVal)
	{
		thisClass::SetVersion(szVersion)
		return *this;
	}
	bool operator == (__in const thisClass& versionString)
	{
		return (thisClass::Compare(*this, versionString) == 0);
	}
	bool operator < (__in const thisClass& versionString)
	{
		return (thisClass::Compare(*this, versionString) < 0);
	}
	bool operator > (__in const thisClass& versionString)
	{
		return (thisClass::Compare(*this, versionString) > 0);
	}
	bool operator <= (__in const thisClass& versionString)
	{
		return (thisClass::Compare(*this, versionString) <= 0);
	}
	bool operator >= (__in const thisClass& versionString)
	{
		return (thisClass::Compare(*this, versionString) >= 0);
	}

public:
	stringClass GetVersion()
	{
		return thisClass::Convert(m_dwVals);
	}
	void SetVersion(__in_z LPCTSTR newVal)
	{
		thisClass::Parse(newVal, m_dwVals);
	}
	int Compare(__in const thisClass& versionString)
	{
		return thisClass::Compare(*this, versionString);
	}

public:
	static stringClass Convert(__in const std::vectorr<DWORD>& dwVals)
	{
		stringClass strVersion;

		for (int i = 0; i < t_nCount; i++)
		{
			TCHAR szVal[16] = { 0 };
#pragma warning(push)
#pragma warning(disable:4996)
			_itot(dwVals[i], szVal, 10);
#pragma warning(pop)

			if (i == 0)
			{
				strVersion = szVal;
			}
			else
			{
				strVersion += CString(t_chSep) + szVal;
			}
		}

		return strVersion;
	}
	static void Parse(__in_z LPCTSTR szVersion, __out std::vectorr<DWORD>& dwVals)
	{
		ATLASSERT(szVersion);

		stringClass strVersion = szVersion;

		for (int i = 0; i < t_nCount; i++)
		{
			int nLength = strVersion.Find(t_chSep, 0);
			if (nLength == -1)
			{
				stringClass strVal = strVersion.Left(strVersion.GetLength());
				nLength = strVersion.GetLength();

				strVal.Trim();
				dwVals[i] = (strVal.GetLength() == 0) ? 0 : _tstoi(strVal);
			}
			else
			{
				stringClass strVal = strVersion.Left(nLength);

				strVal.Trim();
				dwVals[i] = (strVal.GetLength() == 0) ? 0 : _tstoi(strVal);
			}

			strVersion = strVersion.Right(strVersion.GetLength() - nLength - 1);
		}
	}
	static int Compare(__in_z LPCTSTR szVersion1, __in_z LPCTSTR szVersion2)
	{
		ATLASSERT(szVersion1);
		ATLASSERT(szVersion2);

		thisClass versionString1 = szVersion1;
		thisClass versionString2 = szVersion2;

		return thisClass::Compare(versionString1, versionString2);
	}
	static int Compare(__in const thisClass& versionString1, __in const thisClass& versionString2)
	{
		for (int i = 0; i < t_nCount; i++)
		{
			if      (versionString1.m_dwVals[i] r< versionString2.m_dwVals[i])
			{
				return -1;   
			}
			else if (versionString1.m_dwVals[i] > versionString2.m_dwVals[i])
			{
				return 1;
			}
		}

		return 0;
	}

public:
	std::vector<DWORD> m_dwVals;
};

typedef CVersionStringT<3>  CMsiVersionString;
typedef CVersionStringT<4>  CFileVersionString;
---


■(ファイル)バージョン文字列を扱うクラス (CVersionStringT) - Windows - 社本@元ネオニート Blog
http://www.ailight.jp/Blog/sha256/archive/2007/4/13/(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%89%B1%E3%81%86%E3%82%AF%E3%83%A9%E3%82%B9%20(CVersionStringT)%20-%20Windows

 

posted @ 16:02 | Comment (0)

2011年11月16日 #

ビルド番号のインクリメント - Visual C++

C/C++ で、ネイティブ なモジュールを開発していて面倒なのが、ビルドナンバーのインクリメントです。
モジュールが少ないうちは手で更新することもできますが、多くなってくると手で更新することは現実的では
ありません。やり方は色々あるでしょうが、バッチファイルのみで簡単にできる方法を紹介します。


1. ビルド番号を定義するヘッダーファイルを作成

ここでは、ファイル名をBuildNo.h、ビルド番号をBUILDNO としています。

---
#pragma once

#define BUILDNO  1
#define BUILDNO_STR "1"
---


2.  ビルド番号をインクリメントするバッチファイルを作成

1 で用意したBuildNo.h をパースして、ビルド番号を取得&インクリメントした後、BuildNo.h を
作成します。上書きしてしまうことが不安な人は、オリジナルをリネームしてバックアップしておくと
良いかも しれません。ここは、ファイル名をIncrementBuildNo.cmd とします。

---
@echo off

set HEADERFILE=%~dp0BuildNo.h

for /F "usebackq tokens=1,2,3" %%i in ("%HEADERFILE%") do (
 if "%%i"=="#define" (
  if "%%j"=="BUILDNO" (
   set BuildNo=%%k
  )
 )
)
if "%BuildNo%"=="" (
 echo エラー: ビルド番号が取得できませんでした
 exit /b 1
)

rem ビルド番号のインクリメント
set /a NewBuildNo=%BuildNo%+1

rem 新しい BuildNo.h の生成
echo #pragma once >> "%HEADERFILE%"
echo. >> "%HEADERFILE%"
echo #define BUILDNO %NewBuildNo% >> "%HEADERFILE%"
echo #define BUILDNO_STR "%NewBuildNo%" >> "%HEADERFILE%"
---


3. RC ファイルを修正

ビルド番号を使うように、RCファイルを修正します。以下は、修正が必要な部分を抜粋しています。

---
FILEVERSION   1.0.0.BUILDNO
PRODUCTVERSION   1.0.0.BUILDNO

VALUE "FileVersion",     "1.0.0." BUILDNO_STR
VALUE "ProductVersion",  "1.0.0." BUILDNO_STR
---


4. ビルド前にバッチファイルを呼び出す

makefile やMSBUILD などのビルド前の処理に、2 で用意したバッチファイルを呼び出すようにすれば、
ビルドする度にBuildNo.h のビルド番号がインクリメントされます。
 

posted @ 18:25 | Comment (0)

2011年10月29日 #

管理者権限があるかどうかを調べる - バッチファイル

バッチファイルで管理者権限があるかどうかを調べる方法です。

copy nul "%SystemRoot%\temp.tmp" 1>nul 2>&1
if errorlevel 1 (
 echo.
 echo Please run as administrator
 echo.
 pause
 goto :EOF
) else (
 del "%SystemRoot%\temp.tmp" 1>nul 2>&1
)
 

posted @ 10:25 | Comment (0)

2011年10月12日 #

WiX のインストール ディレクトリ の取得 - バッチファイル

バッチファイルで、WiX のインストール ディレクトリ を取得する方法です。

---
call :GetWiX30Dir
echo WIX30DIR:      %WIX30DIR%

goto :EOF


rem ===================================================
rem GetWiX30Dir
rem ===================================================
:GetWiX30Dir
if /i "%PROCESSOR_ARCHITECTURE%"=="x86" (
 for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows Installer XML\3.0" /v "InstallRoot"') do (
  if /i "%%i"=="InstallRoot" (
   set WIX30BINDIR=%%k
  )
 )
) else if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
 for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows Installer XML\3.0" /v "InstallRoot"') do (
  if /i "%%i"=="InstallRoot" (
   set WIX30BINDIR=%%k
  )
 )
) else (
 exit /b 1
)
set WIX30DIR=%WIX30BINDIR:~0,-4%
set WIX30BINDIR=
if "%WIX30DIR%"=="" (
 exit /b 1
)
exit /b 0
---

posted @ 16:41 | Comment (2)

Windows AIK のインストール ディレクトリ の取得 - バッチファイル

バッチファイルで、Windows AIK のインストール ディレクトリ を取得する方法です。

---
call :GetWindowsAik20Dir
echo AIK20DIR:      %AIK20DIR%

goto :EOF



rem ===================================================
rem GetWindowsAik20Dir
rem ===================================================
:GetWindowsAik20Dir
for /f "tokens=1,2,*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\ComponentStudio\6.1.7600.16385" /v "ServicingPath"') do (
 if /i "%%i"=="ServicingPath" (
  set AIK20ServicingDir=%%k
 )
)
set AIK20DIR=%AIK20ServicingDir:~0,-17%
set AIK20ServicingDir=
if "%AIK20DIR%"=="" (
 exit /b 1
)
exit /b 0
---

posted @ 16:38 | Comment (0)

Windows SDK のインストール ディレクトリ の取得 - バッチファイル

バッチファイルで、Windows SDK のインストール ディレクトリ を取得する方法です。

---
call :GetCurrentWindowsSdkDir
echo CurrentWindowsSdkDir: %CurrentWindowsSdkDir%

call :GetWindowsSdk71Dir
echo WindowsSdk71Dir: %WindowsSdk71Dir%

goto :EOF



rem ===================================================
rem GetCurrentWindowsSdkDir
rem ===================================================
:GetCurrentWindowsSdkDir
for /f "tokens=1,2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows" /v "CurrentInstallFolder"') do (
 if /i "%%i"=="CurrentInstallFolder" (
  set "CurrentWindowsSdkDir=%%k"
 )
)
if "%CurrentWindowsSdkDir%"=="" (
 exit /b 1
)
exit /b 0


rem ===================================================
rem GetWindowsSdk71Dir
rem ===================================================
:GetWindowsSdk71Dir
for /f "tokens=1,2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1" /v "InstallationFolder"') do (
 if /i "%%i"=="InstallationFolder" (
  set "WindowsSdk71Dir=%%k"
 )
)
if "%WindowsSdk71Dir%"=="" (
 exit /b 1
)
exit /b 0
---

 

posted @ 16:35 | Comment (0)

My Document の取得 - バッチファイル

バッチファイルで、My Document を取得する方法です。

---
call :GetMyDocumentsDir
echo MyDocumentDir: %MyDocumentDir%

goto :EOF

rem ===================================================
rem GetMyDocumentsDir
rem ===================================================
:GetMyDocumentsDir
for /f "tokens=1,2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Personal"') do (
 if /i "%%i"=="Personal" (
  set MyDocumentDir=%%k
 )
)
if "%MyDocumentDir%"=="" (
 exit /b 1
)
exit /b 0
---

"User Shell Folders" キーの下には、My Document だけではなく、Desktop, My Pictures などの
フォルダーが定義されています。上記のバッチを参考に、必要なサブルーチンを作ると便利かもしれません。

posted @ 16:23 | Comment (0)

2011年7月13日 #

Windows AIK のバージョン

各Windows AIK のバージョンに対するWindows PE、ベースとなるWindows が
混乱を招くようなので簡単にまとめてみました。


Windows AIK    Windows PE    ベースとなるWindows   
1.0 2.0 Windows Vista
1.1 2.1 Windows Vista SP1
2.0 3.0 Windows 7
2.1 3.1 Windows 7 SP1


■Windows 自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=C7D4BC6D-15F3-4284-9123-679830D629F2

■Windows Vista SP1 および Windows Server 2008 用の自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=94BB6E34-D890-4932-81A5-5B50C657DE08

■Windows 7 用の Windows 自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=696DD665-9F76-4177-A811-39C26D3B3B34

■Windows 7 SP1 用の Windows 自動インストール キット (AIK)
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=0AEE2B4B-494B-4ADC-B174-33BC62F02C5D

posted @ 20:52 | Comment (0)

2011年7月12日 #

MSIファイルを簡単にDark で逆コンパイルするバッチファイル - WiX

以下のバッチファイルをダブルクリックすると、そのバッチファイルがあるフォルダの
配下の全MSIファイルを、Dark で逆コンパイルします。

MSIファイルの作りが気になるときに、簡単にチェックできるので便利です。


---
@echo on

set WiXDir=%ProgramFiles(x86)%\Windows Installer XML v3
set SRC=%~dp0

for /r "%SRC%" %%i in ("*.msi") do (
 "%WiXDir%\bin\dark.exe" "%%i" "%%i.wxs"
)

:end
pause
---

dark.exe (逆コンパイラ) の使い方 - WiX - 社本@元ネオニート Blog
http://www.ailight.jp/Blog/sha256/archive/2005/2/3/darkexe%20(%E9%80%86%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9)%20%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%20-%20WiX

posted @ 18:09 | Comment (0)

Windows のバージョンとビルド番号の取得 - バッチファイル

バッチファイルでWindows のバージョンとビルド番号の取得する方法です。


for /f "delims=" %%i in ('ver') do set _VER=%%i
set WIN_VER=%_VER:~-9,3%
set WIN_BUILD=%_VER:~-5,4%

echo Version: %WIN_VER%
echo Build: %WIN_BUILD%
 

posted @ 16:41 | Comment (0)

2011年7月4日 #

TFS2010用の VS2008SP1 上位互換性更新プログラム その2

Visual Studio 2008 から、Team Foundation Server 2010 への接続するための
手順が面倒なので、まとめてみました。


1. Visual Studio 2008 をインストール

普通に、DVD からVisual Studio 本体とMSDN ライブラリをインストールする。

2. Team Explorer をインストール

Team Edition の場合、DVD の TFC フォルダーからインストールすることができます。
それ以外のエディションの場合、別途、ダウンロードする必要があります。

3. Visual Studio 2008 SP1 を適用

VS2008にSP1が適用済みの場合でも、後からTeam Explorerをインストールした場合、
Visual Studio 2008 SP1 を適用する必要があります。

4. Windows Update を適用

おそらく、いくつかのアップデートが見つかるでしょう。 :-)

5. TFS への接続

Team Foundation Server name のところに、http://ServerName:8080/tfs/CollectionName の形式で
入力することができるようになります。CodePlex に接続する場合、https://tfs.codeplex.com:443/tfs/TFS31 と
TFS名のところに入力することにより、接続できました。(CollectionName はプロジェクトによって変わるかも)


 ■Visual Studio Team System 2008 チーム エクスプローラ - Microsoft
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=0ED12659-3D41-4420-BBB0-A46E51BFCA86

■Microsoft Visual Studio 2008 Service Pack 1 (インストーラ)  - Microsoft
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=FBEE1648-7106-44A7-9649-6D9F6D58056E

■Team Foundation Server 2010 (インストーラー) 用の Visual Studio Team System 2008 Service Pack 1 上位互換性更新プログラム
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d&displaylang=ja-nec
 

posted @ 17:11 | Comment (0)

2011年7月1日 #

Kinect for Windows SDK Beta Forums

Kinect for Windows SDK Beta Forums というのができたようですね。

- General Discussion—Kinect for Windows SDK Beta from Microsoft Research
- NUI API and Programming—Kinect for Windows SDK Beta from Microsoft Research
- Audio API and Programming—Kinect for Windows SDK Beta from Microsoft Research


■Kinect for Windows SDK Beta Forums - MSDN
http://social.msdn.microsoft.com/Forums/en/category/kinectsdk

posted @ 21:11 | Comment (0)