我想使用Win32 :: GuiTest來測試基於InstallShield的卸載過程。我可以打開控制面板,找到應用程序,然後調用InstallShield,但是我沒有做任何事情似乎讓我選擇安裝程序中的「刪除」按鈕。到目前爲止,我得到了:爲什麼我可以使用Win32 :: GuiTest在XP上驅動InstallShield而不是在Windows 7上?
sub uninstall($;$) {
my ($name, $force) = @_;
if (! defined($force)) {
$force=0;
}
my @windows;
# Control Panel window
my $cpwin;
my $w;
my $text;
# Install Shield window
my $iswin;
# Run the Control Panel (In windir, do `control appwiz.cpl`)
system("cd %windir% && control appwiz.cpl");
sleep 1;
print("Opened control panel\n");
# Get the Window ID of the control panel
# FIXME - this label is system specifie (W7)
@windows = FindWindowLike(undef, "Programs and Features", "");
$cpwin = $windows[0];
printf("Found CP window ID %x\n", $cpwin);
# Get the Folder View window of the control panel
# Find the list of applications
@windows = FindWindowLike($cpwin, "FolderView");
$w = $windows[0];
# Find program in the list
if (Win32::GuiTest::SelListViewItemText($w, $name) == 0) {
printf("Could not find '$name'.\n");
return -1;
}
# Invoke the installer for by pressing [Return]
Win32::GuiTest::SendKeys("~");
# Wait for the "initializing the wizard" window
@windows = Win32::GuiTest::WaitWindow("InstallShield Wizard", 5);
# Wait for the real installer window
sleep 10;
@windows = Win32::GuiTest::WaitWindow("InstallShield Wizard", 3);
$iswin = $windows[0];
# Win32::GuiTest::WaitWindow("Remove");
printf("Found IS window ID %x\n", $iswin);
# Win32::GuiTest::SetFocus($iswin);
@windows = FindWindowLike($iswin, "&Remove", "Button");
my $remove = $windows[0];
printf("Found remove button %x\n", $remove);
Win32::GuiTest::PushButton($remove);
# Win32::GuiTest::SetFocus($remove);
# Win32::GuiTest::SendKeys("%r");
# Win32::GuiTest::MouseClick("Remove",$iswin);
# Win32::GuiTest::CheckButton($remove);
# Win32::GuiTest::SendKeys("{DOWN}{DOWN}");
# Win32::GuiTest::MouseClick("Next",$iswin);
# Win32::GuiTest::PushChildButton($iswin, "Cancel");
我試過的東西(註釋掉,最後)都沒有任何效果。
我在Windows 7上使用ActivePerl和Win32 :: GuiTest,如果有任何問題。
(成爲的那種。我的Perl可能很爛。我有> 25年的經驗編程,但比在Perl一個月的時間。)
我轉移到試圖駕駛的NSIS安裝。我也無法讓它工作。我的同事把它用在了他真正的XP系統上,但我的W7虛擬機中有一個非啓動器。 OTOH,記事本示例(http://search.cpan.org/dist/Win32-GuiTest/lib/Win32/GuiTest/Examples.pm#eg/notepad.pl)對我來說工作得很好。 – 2011-04-12 18:02:14