我已经在我的 Windows 系统上安装了一个应用程序。我有一个 Perl 脚本,它每天都会重新安装相同的软件。
我想知道是否真的安装了软件。
我想到的一种方法是检查应用程序的安装日期。
最佳答案
我从未成功安装 Net::WMIClient模块:它需要一个难以捉摸的外部库,该库不在模块文档链接到的包中
在 Perl 中使用反引号直接使用 wmic 命令相当简单。这些事你要牢记
实用程序返回的每一行都将以 CR LF 对结尾。我在下面的代码中用 s/\R\z// 删除了它们,它使用 \R 模式来匹配任何行终止符序列
实用程序的输出在开头有一个空行。我已经删除了数组 @data 开头的元素,直到第一个元素包含非空格字符
第一个非空行是列名序列
除非您另外指定,否则实用程序的输出包含固定宽度的数据列。如果您请求 CSV 格式,使用选项 /format:csv
wmic 实用程序速度不快:该命令在我的系统上执行大约需要 15 秒
此程序读取与给定模式匹配的所有产品的名称、版本和安装日期。我使用了 %perl%,但您会想要使用能够选择您感兴趣的产品的东西
数组 @products 中的 CSV 数据行被转换为哈希值,以标题行中的值作为键值。请注意,与 SQL 不同,这些值不会按照它们在命令行中请求的顺序显示
请注意,InstallDate 字段只是一个日期,因此如果产品在同一天更新两次,则该值不会改变。这就是为什么我还包含了 version 字段,如果您的软件保持正确的版本系统,它将正确区分更新
Win32_Product 类的属性和方法的完整列表(我们只对此处的属性感兴趣)on the Microsoft Developer Network here .您可能会发现其他有用的字段
我使用 Data::Dump 来显示数组 @products 的最终内容,仅用于演示目的。我相信您能够在那里工作以执行您需要的检查
use strict;
use warnings 'all';
my @products = `wmic product where "name like '%perl%'" get name, version, installdate /format:csv `;
s/\R\z// for @products;
shift @products until $products[0] =~ /\S/;
my @keys = split /,/, shift @products;
for ( @products ) {
my %item;
@item{@keys} = split /,/;
$_ = \%item;
}
use Data::Dump;
dd \@products;
[
{
InstallDate => 20160517,
Name => "Strawberry Perl (64-bit)",
Node => "CALAMUS",
Version => "5.24.1",
},
]
关于windows - 获取特定应用程序在 Windows 上的安装日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388349/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs