gpt4 book ai didi

windows-installer - InnoSetup MsiQueryProductState

转载 作者:行者123 更新时间:2023-12-04 08:58:37 25 4
gpt4 key购买 nike

我想用 Inno 设置替换 VS 设置。请检查是否安装了旧版本,我找到了“MsiQueryProductState”方法。
我发现了几个看起来像这样的例子:

function MsiQueryProductState(ProductCode: string): integer;
external 'MsiQueryProductStateA@msi.dll stdcall';
function MsiConfigureProduct(ProductCode: string;
iInstallLevel: integer; eInstallState: integer): integer;
external 'MsiConfigureProductA@msi.dll stdcall';
const
INSTALLSTATE_DEFAULT = 5;
INSTALLLEVEL_MAXIMUM = $ffff;
INSTALLSTATE_ABSENT = 2;

检查产品总是返回 2 而不是所需的 5 值 (INSTALLSTATE_DEFAULT)

我发现了错误,我将其作为答案发布...

感谢 Freddy

最佳答案

问题是 InnoSetup 的 Unicode 版本与函数原型(prototype)的 ANSI 版本混合。替换 MsiQueryProductStateA 就足够了与 MsiQueryProductStateW .

如果您使用这个有条件定义的脚本,InnoSetup 编译预处理器将根据您何时使用 ANSI 或 Unicode InnoSetup 为函数(Unicode 或 ANSI)找到正确的版本。

[Code]
#IFDEF UNICODE
#DEFINE AW "W"
#ELSE
#DEFINE AW "A"
#ENDIF

function MsiQueryProductState(ProductCode: string): integer;
external 'MsiQueryProductState{#AW}@msi.dll stdcall';
function MsiConfigureProduct(ProductCode: string;
iInstallLevel: integer; eInstallState: integer): integer;
external 'MsiConfigureProduct{#AW}@msi.dll stdcall';

关于windows-installer - InnoSetup MsiQueryProductState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7683990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com