function install_R2011aJaDoc(zip_file)
%
% INSTALL_R2011aJADOC は、R2011a+ 日本語ドキュメンテーション Web ダウンロード パッケージをインストールします。
%
% INSTALL_R2011aJADOC(ARCHIVE) は、R2011a+ 日本語ドキュメンテーション Web ダウンロード パッケージ
% ARCHIVE をインストールします。


%   Copyright 2011 The MathWorks, Inc.
%   $Revision: 1.1 $  $Date: 2011/03/12 16:34:22 $

% first check if the jvm is available
if (~usejava('jvm'))
    error('install_R2011aJaDoc を実行するには Java が必要です。')
end

% check args
if nargin < 1
    zip_file = 'R2011a_ja_doc.r2011a.zip';
end

% check if archive exists
if (exist(zip_file, 'file') ~= 2)
    error('アーカイブ %s が存在しません。\nインストールできませんでした。', zip_file)
end

% obtain addon name, ver and arch from zip_file name
[zip_file_path, zip_file_name, zip_file_ext] = fileparts(zip_file);
[addon_name, remain] = strtok(zip_file_name, '.');
[addon_rel, remain] = strtok(remain, '.');
addon_arch = strtok(remain, '.');
% strip off 'r' prefix from addon_rel
addon_rel = strtok(addon_rel, 'r');

msg = sprintf('%s をインストールしています…', addon_name);
disp(msg)


% check addon ver against matlab ver
matlab_rel = version('-release');
if (~strcmpi(matlab_rel, addon_rel))
    error('アーカイブのリリース (%s) は MATLAB リリース (%s) と一致しません。\nインストールできませんでした。', addon_rel, matlab_rel, addon_name)
end

% installing to matlabroot
install_dir = matlabroot;

% save lastwarn state
[lwMessage,lwID] = lastwarn('');

% unzip zip file to install_dir
msg = sprintf('アーカイブ %s を %s に解凍中…', zip_file, install_dir);
disp(msg)
unzipped_files = unzip(zip_file, install_dir);

% check if there were permission problems during extraction from zip file
[lwUnzip,theID] = lastwarn;
if strcmpi(theID,'MATLAB:unzip:UnableToOverwrite')
        error(['\nインストールできませんでした。\nアーカイブ内のファイルのいくつかを上書きする権限がありません。\n',...
        '以下を実行し、\n\nsystem(''attrib -r "%s"\\*.* /s'')\n\nこれらのファイルの書き込み権限を設定してください。これが動作しない場合は、システム管理者に連絡してください。'],...
        fullfile(install_dir,'help','ja_JP'));
end

% reset lastwarn state if no warnings
if isempty(lwUnzip)
    lastwarn(lwMessage,lwID);
end

% check if files were extracted from zip file
if (isempty(unzipped_files))
    error('アーカイブ %s から解凍されたファイルがありません。\n%s をインストールできませんでした。', zip_file, addon_name)
end

% fix permissions on extracted files - doc files generally are not writable
for i = 1:length(unzipped_files)
    file = unzipped_files{i};
    fileattrib(file, '-w');
end

% Refresh docroot in case new doc directories were added
docroot(docroot);

msg = sprintf('%s のインストールが完了しました。', addon_name);
disp(msg)

msg = sprintf('\n更新した日本語ドキュメンテーションを表示するには、MATLAB を再起動して \"doc \" と入力してください。');
disp(msg)
