我正在开发一个应该安装多个Windows服务的安装程序.我们经常制作新版本(使用新的.msi文件),并且我们使用主要升级使其易于安装在以前的安装中.
问题是我们需要更新服务文件而不覆盖服务配置(例如帐户用户名和密码).
我们使用ServiceInstall
和ServiceControl
保存该服务的组件内部exe
文件.有没有办法使ServiceInstall
条件的执行(使用类似条件REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE
)所以升级时没有卸载服务(刚刚停止,所以我们可以升级文件)?
一种解决方案是使用自定义操作,但也许有更好的方法?
谢谢!
在以编程方式在OpenSSL中使用ECDSA时,如何设置用于签名消息的私钥?我有以下代码:
static int create_signature(unsigned char* hash)
{
EC_KEY *eckey=NULL;
EC_GROUP *ecgroup=NULL;
EVP_PKEY *evpkey=NULL;
unsigned char *signature=NULL;
point_conversion_form_t form = POINT_CONVERSION_UNCOMPRESSED;
int signature_size, block_size;
unsigned char * block=NULL;
ecgroup = get_ec_group_192();
EC_GROUP_set_asn1_flag(ecgroup, OPENSSL_EC_NAMED_CURVE);
EC_GROUP_set_point_conversion_form(ecgroup, form);
eckey=EC_KEY_new();
EC_KEY_set_group(eckey,ecgroup);
EC_KEY_generate_key(eckey);
evpkey=EVP_PKEY_new();
EVP_PKEY_assign_EC_KEY(evpkey,eckey);
signature=OPENSSL_malloc(EVP_PKEY_size(evpkey));
ECDSA_sign(0, hash, sizeof(hash), signature, &signature_size, eckey);
printf("%s", signature);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该函数get_ec_group_192()
是通过运行创建的,openssl ecparam -C -name secp192k1 -genkey
它也会生成一些EC PARAMETERS
和一个EC PRIVATE KEY
.
我想要做的是加密hash
我的私钥中包含的消息,以便只有公钥才能解密它.这可能与上面的代码有关,还是我完全错了?
所以我使用简单的Zend_Auth机制来确保我的用户在访问某些控制器之前登录.我的AdminController包含此方法
function preDispatch()
{
$auth = Zend_Auth::getInstance();
if (!$auth->hasIdentity()) {
$this->_redirect('auth/login');
}
}
Run Code Online (Sandbox Code Playgroud)
用户被重定向到AuthController,但在成功登录后被重定向到我的网站的默认"索引"页面,而不是"管理员"页面.
function loginAction()
{
if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
// collect the data from the user
Zend_Loader::loadClass('Zend_Filter_StripTags');
$filter = new Zend_Filter_StripTags();
$username = $filter->filter($this->_request->getPost('username'));
$password = $filter->filter($this->_request->getPost('password'));
if (empty($username)) {
$this->view->message = 'Please provide a username.';
} else {
// setup Zend_Auth adapter for a database table
$dbAdapter = Zend_Db_Table::getDefaultAdapter();
//Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('login');
$authAdapter->setIdentityColumn('email');
$authAdapter->setCredentialColumn('password');
// Set the input credential values to authenticate against …
Run Code Online (Sandbox Code Playgroud) 在grails文件中,我可以为Tomcat上运行的grails应用程序定义不同的上下文路径吗?(例如,该项目称为MyApplication,但我想将其引用为/ myapp)谢谢
我需要在javascript中使用正则表达式,它执行以下操作.
这些实例一这不是一个HTML实体的一部分,应改为w ^.
例如:
abc should change to wbc
aabacaa should change to wwbwcww
&abcaa& should change to &wbcww&
Run Code Online (Sandbox Code Playgroud)
等等.
我正在使用JavaScript.
任何帮助表示赞赏.
我在Haskell中定义了一个Tree数据类型,并在一个关联的'size'方法中计算了树中元素的数量.这之前有用,但我更新了Tree数据类型以使用命名字段,如下面的定义:
data Tree a = Empty
| Leaf {value::a}
| Node {left :: (Tree a), value :: a, right :: (Tree a)}
deriving (Eq, Ord, Show)
Run Code Online (Sandbox Code Playgroud)
我发现(通过在GHCi中玩游戏)我可以使用函数(左n)访问命名字段.但是,当我尝试使用此功能时,我收到一个错误:
size :: Tree a -> Int
size Empty = 0
size (Leaf l) = 1
size (Node n) = size (left n) + 1 + size (right n)
Run Code Online (Sandbox Code Playgroud)
GHCi简单地说"不在范围内:左边"和等同于右边.Tree定义位于名为Tree的模块中,大小定义位于名为Main的模块中,但是对于非命名字段,从Tree数据类型访问变量时,我从未遇到过范围问题.
好的; 假设此代码在调试模式下运行 -
static StackFrame GetTopFrameWithLineNumber(Exception e)
{
StackTrace trace = new StackTrace(e);
foreach (StackFrame frame in trace.GetFrames())
{
if (frame.GetFileLineNumber() != 0)
{
return frame;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我总是返回null.为什么我检查Exception.StackTrace
字符串时堆栈帧没有行号,它显然有任何非框架代码?从我不知道的异常构造堆栈跟踪是否存在问题?
编辑CLARITY: 在抛出的异常中,我可以看到StackTrace属性中的行号.我假设这意味着我拥有我需要的一切.
我很清楚关于检查异常是否是一个好主意的整个论点,我认为它们是......但这不是这个问题的重点.我正在设计一个相当简单的编译OOP语言,我决定使用已检查的异常作为一种返回错误的方法,而不会返回返回错误代码的C路由.
我正在寻找一些有关如何改进已检查异常的Java模型以消除其大多数不良方面的信息,可能是语法更改或略微更改实际功能.对检查异常的主要批评之一是,懒惰的程序员可能会吞下它们,因此不会出现错误.
也许它可以是可选的捕获异常,因此如果没有捕获,程序会崩溃?或者也许可以有特定的表示法来表示没有处理异常(比如C++虚函数'= 0'表示法)?或者,如果异常处理程序为空,我甚至可能导致程序崩溃(虽然这可能会让程序员对该语言不熟悉)
try ... catch语法怎么样,你认为可以用更简洁的方式表达异常被捕获吗?该语言将使用垃圾收集器,就像Java一样,所以是否需要finally子句?最后,还有哪些其他缺点可以检查异常以及存在哪些潜在解决方案(如果有的话)?
我有一个包含通用导航菜单的父模板.我希望能够添加class="selected"
到适当的菜单选项.
我希望能够在子模板中设置变量,例如:
{% set menu = "products" %}
Run Code Online (Sandbox Code Playgroud)
并做:
{%ifequal menu "products" %}class="selected"{% endifequal %}
Run Code Online (Sandbox Code Playgroud)
我不想在View中设置一个值,因为我必须将它添加到我的所有视图方法中,并且我不想在每个子页面中重复整个菜单html,因为如果菜单更改我只想更改HTML在一个地方.
我是从"非Django"的心态来接近这个吗?
任何帮助将非常感激.谢谢.
可能重复:
静态变量
如何从C中的另一个文件访问静态变量?由于静态变量具有文件范围,我认为我们无法在文件外访问它.但我仍然觉得可能有一些技巧或方法来做同样的事情.
c ×2
.net ×1
debugging ×1
deployment ×1
django ×1
encryption ×1
exception ×1
ghci ×1
grails ×1
haskell ×1
inheritance ×1
javascript ×1
line-numbers ×1
openssl ×1
regex ×1
stack-trace ×1
templates ×1
tomcat ×1
variables ×1
wix ×1