トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

CPS AIE

一部の情報は非常に古いもの(20年以上前〜)ですので、利用する際はご注意ください(Java 1.4 とか .NET 1.0 とか、Windows 2000 とか)
お問い合せは wiki@shise.net まで。Gmail に転送されるので、スパムは全部カットされます。


 

はじめに


Citrix Presentation Server 4.0 での分離環境の検証です。

独自のプログラムを作成し、分離環境へインストールし検証しました。
適当な検証で、間違ってるかもしれないので気をつけてください。




ユーザーのAIEディレクトリにファイルのコピーが作成されるタイミング


ファイルを読み取り専用で開くと、コピーは作成されない。

File.Open(filename, FileMode.Open, FileAccess.Read);


ファイルを読み書きモードで開くと、例え書込みを行っていなくても開いただけでコピーが作成される。

File.Open(filename, FileMode.Open, FileAccess.ReadWrite);


読み取り専用のファイルを開く


読み書きモードで読み取り専用ファイルを開くと exception が throw されファイルが開けないが、AIEディレクトリにコピーが作成されていた。
無論、読み取り専用で開けば、コピーは作成されない。


ディレクトリの扱い


コンソールからディレクトリを作成すると、分離環境からもそれを確認することが出来る。
ただし、このディレクトリを分離環境上で削除した場合、同じ名前でディレクトリを作成することが出来い。
「名前を変更できません。無効な MS-DOS ファンクションです。」と表示される。

ユーザー別AIEディレクトリの場所


分離環境のデータの保存先は変更可能。
また、ファイルサーバー上に作成することも可能。

ユーザープロファイルルート

デフォルト値

%APPDATA%\Citrix\AIE

変更例

\\fs-test\Aie\%USERNAME%\AIE

手動でショートカットを作成し認識させる


手動でショートカットをAIEディレクトリに作成した場合

aiesetup /e test

というコマンドを入力することで認識され、公開アプリケーションに登録・実行する事が出来た。
ただし、実行ファイルでないショートカット(*.exe 以外)だと、アプリケーションの検出で登録されないようだ。(*.msi のショートカットを作成したが、分離環境にインストールされたアプリケーションとして認識されなかった)

手動でショートカットを作成する時の問題点としては、
ショートカットを作成するためには実行ファイルが存在しなければならない。
そのため分離環境にインストールしたプログラムのショートカットを作成する場合は、分離環境からプログラムをコピーしてきて本来のディレクトリ構成を再現した上でショートカットを分離環境のメニューの所に作成し、分離環境からコピーしてきたディレクトリを削除するという手間がかかる。


コピーコマンドの利用


aiesetup でコピーコマンドを利用してみた。
実際には以下のようなコマンドを入力した。

aiesetup test copy *.* "C:\Program Files\"

これは、「アプリケーションのインストールに失敗しました (0x00000002)。」と表示された。
(0x00000002 は、Win32 エラーで、「指定されたファイルが見つかりません」という意味)
そこで、

aiesetup test cmd /C copy *.* "C:\Program Files\"

と入力すると、正常に仮想環境にコピーされた。
手動でショートカットを作成し、

aiesetup /e test

としたところ、アプリケーションの公開も可能だった。


ちなみに cmd /C は、渡されたコマンドを実行後終了するというもの。


msi のインストールで失敗する場合


aiesetup test setup.msi

と入力すると、「アプリケーションのインストールに失敗しました (0x000000C1)。」と表示され失敗する。
(0x000000C1 は、Win32 エラーで、「有効な Win32 アプリケーションではありません。」という意味)
そこで、

aiesetup test msiexec /i setup.msi

というようにするとインストールする事ができた。
インストールプログラムは exe である事が前提なのかもしれない。


レジストリの扱い


分離環境のアプリケーションで LocalMachine のレジストリを監視したところ、

コンソールから行った変更(キーの作成、値の作成・変更など)を分離環境アプリケーションで確認することが出来たが、
分離環境アプリケーションが書き込んだノードの中の情報は、コンソールと同期しなくなる。
コンソールで新たなノードを作成すると、そのノードは分離環境アプリケーションで見る事が出来る。


分離環境の分離規則について


分離するもの、分離しないものを定義する。
例えば、ユーザープロファイルや、フロッピーへの書き込みなどは、分離する必要が無いため、
「ファイルシステムの無視」という規則で、分離しないように設定されている。

aiesetup のレジストリの分離

Aiesetup によって起動されたアプリケーションによる、レジストリへの書き込みは、自動的に \HK_LM\Software\Citrix\AIE\ 以下に書き込まれるようになる。(aiesetup test regedit と打てば、レジストリエディタでの編集も、分離環境へと書き込まれる。)

Aiesetup によって起動されたアプリケーションから、さらに起動されたアプリケーションも同様に動作する。
ただし、手動で起動したアプリケーションは例外。

分離環境アプリケーションの再インストール

分離環境にインストールしたアプリケーションを再インストールする場合。

  1. C:\Program Files\Citrix\AIE\分離環境名\ 以下のすべてを削
  2. \HK_LM\Software\Citrix\AIE\分離環境名\ 以下のすべてを削除
  3. Aiesetup 分離環境名 setup.exe

とすると良いかもしれない。

もし、管理画面で分離環境を削除してしまうと、分離環境アプリケーションで公開されているものは、一般の公開アプリケーションになる。