DAC で バッチ ファイルを使うには

今回は、Desktop App Converter(DAC) に指定するインストーラをバッチ ファイルにする方法を説明します。以前から、試して見ようと考えていましたが、なかなか作業ができていなかったものになります。最初に、変換するためのインストーラとして、以下のようなフォルダ構造があると仮定します。 C:\Work\BAT フォルダ : 変換の作業フォルダー C:\Work\BAT\Input フォルダ : インストーラなどを配置するフォルダMyApp.exe : 実行ファイルInstall.bat : インストール用のバッチ ファイル Install.bat には、次のような内容を記述しています。 mkdir “%ProgramFiles%\MyApp” xcopy “.\*” “%ProgramFiles%\MyApp” /S /E exit 0 xcopy コマンドのソースに「.\*」のように、カレントからの相対パスを記述しているのが重要な点になります。 この準備ができたら、DAC を管理者権限で起動して、次のように入力します。 cd C:\Work\BAT DesktopAppConverter.exe -Installer “.\Input\Install.bat” -Destination “.” -AppInstallPath “C:\Program Files\MyApp” -AppExecutable “C:\Program Files\MyApp\MyApp.exe” -PackageName “myapp” -Publisher “CN=myapp” -Version “0.0.0.1” -Vervos パラメータが長いので折り返していますが、カレントを変更して、DACのコマンドをワン ライナーで入力します。このコマンドでの特徴は次のようになります。…

0

Windows 互換性ガイドブックを公開しました

お待たせしました。という方が正しいような気がしますが(何年も待たせるのという声が聞こえてきそうです)、Windows 8.1 と Windows Server 2012 R2 に対応した Windows 互換性ガイドブックの翻訳版を公開しました。この公開に合わせて、Windows 10 の互換性ガイドブックも Anniversary Update 関係で更新しています。 日本語版の互換性ガイドブックは、Technet の Windows 10 法人向け技術情報まとめ ページに掲載してあります。 何年も Windows 8.1 に対応した互換性ガイド ブックが公開されなかった経緯ですが、 Windows 8 と Windows Server 2012 互換性ガイドブックが、Windows 7 以前からのマイグレーション用に翻訳されて公開されていました。 Windows 8.1 がリリースされた時に、新しい互換性ガイドブックが翻訳されませんでした。 翻訳されなかったため、互換性ガイドブックのダウンロード センターのページでは、英語版を選択すると Windows 8.1 の Cookbook がダウンロードできて、日本語版を選択すると Windows 8 と Windows Server 2012 互換性ガイドブックのダウンロードができました。 ダウンロード センターのコンテンツの整理作業が行われた時に、日本語版のWindows 8…

0

DsktopBrigde (DACを含む) サンプルについて

今回は、Desktop App Converter のチュートリアル的なサンプルであり、DesktopBridge Sample を紹介します。具体的には、実際のコードを見て頂くとして、この記事ではどのようなサンプルが提供されていて、どのような構造になっているかを解説します。 最初の入門として見るのは、HelloWorldSample か JourneyAcrossTheBridge のサンプルになります。 HelloWorldSample cs フォルダと CentennialPackage フォルダが含まれており、cs フォルダが C# のコンソール アプリケーションになっており、CentennialPackage フォルダは、手作業でAppxを作成するための Appx レイアウト フォルダになっています。このサンプルでは、Desktop App Converter を使用することなく、デスクトップ アプリを Appx パッケージにすることを学習するためのものになっています。 JourneyAccrossTheBridge このサンプルには、ステップ1からステップ5までの5種類が含まれています。学習の流れで説明すると、ステップ1 から ステップ 3が、Windows Forms のデスクトップ アプリを Appx 化 (ステップ1) して、タイル更新を追加(ステップ2)、バックグラウンド タスクを追加(ステップ3) と順番に既存のデスクトップ コードを機能拡張する流れになっています。 ステップ 4 以降は、それまでの流れではなく、UWP のアプリから デスクトップのコードを アプリ サービスとして使用し(ステップ4)、完全な UWP アプリへの移行(ステップ 5)となっています。 ステップ1…

0

アプリのスケーリング対応アセットについて

TechSummit では、「デスクトップ アプリを Windows ストアで公開するには」というお話をさせていただきました。この話では、Desktop App Converter (以降は、DAC と略します)を使用して、インストーラを Appx に変換したり、変換できるアプリの条件などを色々と説明しました。色々な作業を得てから、最終的なアプリに仕上げる時に必要になるタイル アイコンなどを説明するのが、今回の話題になります。 タイルなどのアセットの詳細は、「タイルとアイコン アセットのガイドライン」に詳しく説明があります。内容を読むと、スケール ベースとターゲット ベースのアセットがあることが理解できます。 スケール ベース xxxxxx.scale-100.png など、スケーリングの倍率(100、200、400、etc)に応じて切り替えるアセット。 ターゲットベース xxxxxx.targetseize-16.png など、ターゲット サイズに応じて切り替えるアセット(正方形)で、エクスプローラなどの Windows のシステム側で使用するものになります。 Visual Studio 2015 で UWP アプリのプロジェクトを作成すると、自動的にスケール ベースのアセットなどが使用できる状態になっていますので、使用するアセットをプロジェクトに追加していくことで、ターゲット サイズのアセットなども使えるようになります。ちなみに、UWP プロジェクトを新規で作成した時に、テンプレートが作成するアセットは次のものになっています。 LockScreenLogo.scale-200.png SplashScreen.scale-200.png Square44x44Logo.scale-200.png Squrae44x44Logo.targetsize-24_altform.png Square150x150Logo.scale-200.png StoreLogo.png Wide310x150Logo.scale-200.png つまり、ロックスクリーン、スプラッシュ スクリーン、小さいタイル、正方形タイル、ワイドタイルと システム用のターゲット サイズのアセット、ストア ロゴの 7 つが含まれています。一方で、DAC で作成した アプリに含まれているのは、次のようなアセットになります。 SampleAppx.44×44.png (44px x 44px)…

0

F# ブート キャンプが開催されます

2016年11月19日に、イギリスのケンブリッジより来日した Tomas Petrics さんが参加する F# Boot Camp が開催されます。Tomas さんは、Microsoft Research で Don Syme さん(F#の言語設計者)と一緒にF#の言語設計に携わっており、F# Foundation の設立メンバーでもあり、F#の啓発活動を幅広く実施されいます。プログラミング言語の開発に携わった方のお話を聞ける機会ですので、ご興味のある方は是非、ご参加ください。 そして、前日の11月18日の夜には、F#談話室が開催されます。F#談話室は、無償の勉強会ですが、Tomasさんが参加されます。通訳者はいませんが、下手な英語でもTomasさんとコミュニケーションしてみませんか?

0

Microsoft Tech Summit へ参加させていただきます

11月1日から11月2日に Microsoft Tech Summit が開催されます。このイベントで、急遽、セッションを持つことになりました。「Desktop App Converter で変換したアプリの公開方法」と題して、お話をさせていただきます。9月に正式公開された Desktop App Converter Ver 1.0 を使って、デスクトップ アプリの変換方法から、サイドローディング、そしてストアへ公開するにはどうしたら良いかという話題を説明します。ご興味がありましたら、ご参加ください。

0

Desktop App Converter について

Desktop App Converter の v1.0 がリリースされましたので、情報を整理することが、この記事の目的になります。最初に、リリース形態は以下のようになります。 v1.0 は Windows ストア 経由での提供になります。改善したバージョンは、Windows ストアからの提供のみになることがアナウンスされています。 ベースイメージは、ダウンロード センター経由での提供になります。現時点(10/5)では、Anniversary Update(ビルド 14393) と Insider Build 14915 と 14926、そして DesktopAppConverter の v1.0 の Zip イメージがダウンロードできます。 Desktop App Converter(DAC) を試す前に読んで頂きたいのが、「デスクトップ アプリを UWP に変換する準備をする」というドキュメントで、日本語版は翻訳が追い付いていませんが、英語版のドキュメントに以下のような記述があります。 「Your app is already a full UWP app and wants to invoke a full trust process from within the app…

0

UWP で廃止された UserInformation クラスについて

今更ですが、Windows 10 の UWP アプリで、Windows 8.1 のストア アプリとの比較で廃止予定の API があることに気が付きました。そのクラスは、以下になります。 UserInformation クラスWindows 8.1 までで使用できたクラスで、Windows 10 では正常に動作しなくなっています。 User クラスWindows 10 の UWP より提供された新しいクラスで、UserInformation を使用していた場合は置き換える必要があります。 この変更の背景ですが、Windows 10 ではプライバシー設定に新しく「アカウント情報」が追加されています。このアカウント情報には、User クラスを使ってアカウント情報へアクセスするアプリに許可を与える操作(ダイアログが表示されます)を行ったアプリが表示されます。また、User クラスを使用するアプリの場合は、Package.Appxmanifest の機能で「アカウント情報」を指定しておく必要があります。 プライバシー設定に「アカウント情報」が追加されたことにより、Windows 8.1 までのアプリの動作に影響を与えてしまいます。Windows 8.1 までは、UserInformation クラスを使ったアカウント情報へのアクセスが自由にできるようになっていました。というのは、プライバシー設定で「アカウント情報」という分類がなかったからです。Windows 10 では、「アカウント情報」が新設されたことにより、Windows 8.1 までのアプリは UserInformation クラスの GetDisplayNameAsync メソッドなどが値を返さなくなります。この問題を避けるには、アプリを UWP に作り替えるしか方法がありません。なぜなら、Package.Appxmanifest の機能で「アカウント情報」を指定できるのが UWP しかないということと Windows 10 SDK を使用しないと新しい User クラスへアクセスすることができないからです。 User…

2

Windows ランタイム コンポーネント ブローカーについて

de:code 2016 のサンプルに Windows ランタイム コンポネント ブローカーの UWP が含まれており、その使い方のドキュメントも含めていました。まだ日本語訳はありませんが、「Windows ランタイム コンポーネント ブローカー」の記事が公開されました。この記事には、 サンプル (IPC サーバーのみ) UWP 用のプロジェクト テンプレート へのリンクが含まれています。また、vcvarsall.bat の引数なども解説されています。このドキュメントの公開と同時期に、Windows ストア アプリのドキュメントも英語版が更新されています。 プロジェクト テンプレートでプロジェクトを作成して、プロジェクト ファイルを見れば、マネージ デスクトップ アプリとUWP で説明したプロジェクト ファイルへの変更が行われていることも確認することができます。 技術的には、Windows 10 には、デスクトップ ランタイム(.NET Framework)、Windows ストア アプリ ランタイム(Windows 8.1互換ランタイム)、UWP アプリ ランタイム(Windows ランタイム、.NET Core)の3種類があるので、Windows ランタイム コンポーネント ブローカー自体はデスクトップ ランタイムで動作しますので、動いて当たり前というものになりますが、テンプレートが公開されましたので、これを使用することで容易に Windows ランタイム コンポーネント ブローカーを Visual Studio 2015 で作成できるようになったということになります。  …

0

バイナリ シリアライザについて

オブジェクトをシリアライズする時に、どのシリアライザを使用するかによってデータの互換性を含めて、様々な問題が発生することがあります。.NET Framework や Mono を使った開発で、利用するシリアライザの種類を列挙します。 バイナリ シリアライザBinaryFormatter が標準で組み込まれていますので、使われるケースが多いと思われます。標準以外にも様々なシリアライザが OSS として開発されていたりします。 XML シリアライザDataContractFormatter が標準で組み込まれています。 JSON シリアライザ標準で用意されているシリアライザを使用したり、Json.net を使用することが多いと思います。 バイナリ シリアライザを使用する時の資料は、MSDN ライブラリに掲載されています。バイナリ シリアライザを使用する時の注意は、以下の点になります。 シリアライズするクラスの型を持つアセンブリをライブラリにすること。 後日にクラスにメンバーを追加した場合は、バージョン トレラントを確保すること。 バイナリ シリアライズで作成されたバイナリ データには、「アセンブリ識別子(アセンブリ名、バージョン、カルチャ、パブリック トークン)」と「型の完全名(名前空間。クラス名)」、「シリアライズするフィールド名」と「データ」が記録されています。クラスという型の情報は、アセンブリのType Definition で定義されており、デシリアライズする時に型情報が一致しないとデシリアライズが失敗します。この理由で、シリアライズする型を定義するアセンブリをライブラリにしておくことで、デシリアライズのエラーを削減できるようになります。 シリアライズの基本的な使い方 シリアライズ対象になるクラスが、SerializeSample というアセンブリで、Person クラスが以下のように定義されていたとします(シリアライザは、内部でリフレクションを使用しています。リフレクション API が変更されると、その影響を受けることもあります)。 using System; namespace SerialSample { [Serializable] public class Person { public Person() { } public string Name { get; set;…

0