我想在Haskell中为另一种语言生成代码,但我对如何解决这个问题感到困惑.我正在寻找Haskell中语言的抽象和优雅表示,这对代码生成也很有用.有问题的语言是InstallScript(语言参考指南的链接).有人可以提供关于如何捕获Haskell类型中的InstallScript中使用的语言结构的提示(可能有示例吗?),还是指向类似项目的灵感?
在使用InstallShield 2012 Spring内置的安装程序进行升级时,我看到以下消息:
这些消息基于字符串资源IDS_IFX_SDWELCOMMESSAGE_UPDATE_WELCOME和IDS_IFX_STATUSEX_STATICTEXT_UPDATEUI。我相信未更改的字符串资源将如下所示:
尽管某些资源指示第二个字符串资源是“ InstallShield向导已将%P的%VI更新为版本%VS”。
问题是旧的(已安装的)版本号应该是显示字符串,例如“ 9.1.5.2”,而不是内部版本号的格式化版本,例如“ 9.01.005”。据我了解,它SdSubstituteProductInfo用于在的默认InstallScript代码中IFX_INSTALLED_DISPLAY_VERSION填充%VI替换项OnUpdateUIBefore。以及IFX_INSTALLED_DISPLAY_VERSION来自的默认设置IFX_INSTALLED_VERSION,这说明了为什么首选的显示字符串没有出现在我们希望的位置。而且我假设SdWelcome(或任何对话框或类似引用的代码IFX_INSTALLED_DISPLAY_VERSION)也显示格式错误的版本。
尽管我在网上搜索了有关上述功能,字符串和字符串ID的所有内容,但我还没有找到以正确格式显示正确格式的旧版本号(DisplayVersion)的理想解决方案。一些文章建议对跳过旧版本号的格式字符串进行硬编码,而不要使用包含的字符串资源%VI。其他人建议根据需要手动格式化版本号,然后将结果放入IFX_INSTALLED_DISPLAY_VERSION。我知道有一个更好的答案,我希望下次我或其他任何人寻找它时,可以更轻松地找到它。
我们需要为我们的应用程序创建安装程序.目前我们正在使用Visual Studio 2010免费提供的Install Shield LE.我们需要Install Shield的一些非免费功能,并且正在考虑升级到完整版.
但是,在我们升级之前,我们想考虑其他选择.通过与办公室周围的其他人交谈,他们提到了MSI.我是安装人员的新手,所以如果你们对MSI或Install Shield有任何意见,我很好奇.
安装程序要求:
1.必须支持自定义操作
2.必须支持对话框
3.我们还需要在运行时从用户处获取信息并将其放入配置文件中.不知道如何做到这一点.我认为Install Shield有安装脚本吗?
如果它支持多种语言,那将是一个巨大的奖励
任何输入将不胜感激.
谢谢
windows-installer installshield installscript installscript-msi
它看起来像是内置函数,VerCompare但它需要具有所有四个组件的字符串,例如1.2.3.4.我没有尝试在InstallScript中进行字符串操作,并希望有人已经有代码来获取版本字符串并根据需要添加.0.
要求在安装时检测Windows 10或更高版本。为此,我创建了以下功能。
它在Windows 10和Windows 8.1中给我603(AS VersionNT值)。那是错的。
还有其他方法可以做到这一点吗?
function BOOL isWindows10OrGreater()
STRING svWindowsValue;
NUMBER nWindowsValue;
NUMBER nBuffer;
begin
try
nBuffer = 256;
MsiGetProperty(ISMSI_HANDLE,"VersionNT",svWindowsValue,nBuffer);
StrToNum(nWindowsValue,svWindowsValue);
return (nWindowsValue >= 603);
catch
return FALSE;
endcatch;
end;
Run Code Online (Sandbox Code Playgroud) 我想使用Installscript在安装期间更改我的安装程序的INSTALLDIR值.我该怎么办?我已经尝试过以下操作:创建自定义操作:
function InitializeValues(hMSI)
STRING svProductName;
STRING svInstallDir;
NUMBER nvSize;
begin
nvSize=255;
MsiGetProperty (hMSI, "ProductName", svProductName, nvSize);
if(svProductName = "Notepad Pro") then
svInstallDir = PROGRAMFILES ^ svProductName;
// MsiSetTargetPath(hMSI,INSTALLDIR,svInstallDir);
MsiSetProperty(hMSI,INSTALLDIR,svInstallDir);
MessageBox(INSTALLDIR,INFORMATION);
endif;
end;
Run Code Online (Sandbox Code Playgroud)
我的自定义操作已执行但INSTALLDIR的值不会更改.我已经在成本最终确定之前在UI序列中安排了我的自定义操作,并且在成本最终确定之后执行顺序中.
请帮忙.
我正在尝试使用InstallShield 2013创作工具创建一个InstallScript项目.到目前为止,我刚刚使用默认的对话框和皮肤.现在我需要自定义它们以满足我的需求,但我发现帮助文档中的链接缺乏或损坏.我想知道是否有人知道如何创建自定义对话框皮肤或者可以指向正确的方向.