Word文書を更新するためのPERLスクリプトがあります。 PERLスクリプトは、MS Office 2003または2007で動作するようにコーディングされています。 BFを使用してアップデートを実行しようとしているコンピュータにOffice 2003がインストールされている場合、適切なテンプレートがインストールされ、マクロセキュリティ設定が更新されました。PERLとWin32 :: WordでWord文書を操作すると、コマンドラインでは動作しますが、BuildForgeでは動作しません。
BFをコマンドラインで使用する場合は、exactコマンドを実行すると、期待通りに機能します。 BFステップで実行すると、 "\ servername \ projectname \ bin \ updateVer.pl 94行目のドキュメントを開くことができません"(行番号はPerlスクリプトのcroakです)。
スクリプトはしゃがれ声に、このように見上げ:
# enable Sanity checking and make the variable names meaningful
use strict;
use warnings;
use English;
use Win32::OLE;
# Gain access to MS Word 'wd' constants
use Win32::OLE::Const ('Microsoft Word');
use FindBin qw($RealDir);
use lib ($RealDir, "$RealDir/..", "$RealDir/../lib");
# include the common and log utilities
use SCCM::Common;
use SCCM::Logs;
# use command line inputs
use Getopt::Long qw(:config auto_abbrev permute ignore_case pass_through);
# set up logs and process logfile options
logOptions(qw(-log now));
my $bookmark_update_result = "";
my $update_ref_result = "";
# Get input from user
my $path;
my $bookmarkName;
my $bookmarkValue;
my $Word;
my $newWord = 0;
GetOptions("path=s" => \$path,
"bookmarkName=s" => \$bookmarkName,
"bookmarkValue=s" => \$bookmarkValue);
unless (defined($path))
{ croakf "%[Fail] Path and filename of SVD are required\n"; }
unless (defined($bookmarkName) && defined($bookmarkValue))
{ croakf "%[Fail] bookmarkName and bookmarkValue parameters are both required.\n"; }
# Start Word in a safer way, checking to see if user has it open first.
eval
{
$Word = Win32::OLE->GetActiveObject('Word.Application');
if (! $Word)
{
$newWord = 1;
$Word = Win32::OLE->new('Word.Application', 'Quit');
}
};
croakf "%[Fail] -- unable to start Word Engine: [email protected]\n", Win32::OLE->LastError() if ([email protected] || ! $Word);
my $dispAlerts = $Word->{'DisplayAlerts'};
$Word->{'DisplayAlerts'} = wdAlertsNone;
if ($newWord)
{
$Word->{'Visible'} = 0;
}
my $doc = $Word->Documents->Open($path) or
croakf ("%[Fail] Unable to open doc ", Win32::OLE->LastError());
スクリプトは、このように呼ばれている: ccperl \サーバー名\プロジェクト名\ binに\ updateVer.pl -path「C:\ BuildForgeBuilds \ BFProjectName \ BFProjectName_0177 \ MyDocument.doc "-bookmarkName REV_Baseline -bookmarkValue My_Baseline_10.20.30
私の仕事の文書を開いても問題ないとBFに確信させる方向を得ることはできますか? ありがとうございました!
これは* "Perl"と呼ばれています* – Borodin
ごめんなさい@ボロディン、あなたのご意見が私をどのように助けてくれるのか分かりません。私たちはccperlを使用しています。なぜなら私たちはすべてのマシンにccをインストールしているからです。 – ChrisM
あなたの質問に対する答えはありません。それが理由だ。あなたがPerl言語の名前を正しく綴るのを助けるはずです。あなたはJAVAやPYTHON、あるいは本当にMS OFFICEを書くのか疑問です。 – Borodin