获取dir setup安装盾牌
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取dir setup安装盾牌相关的知识,希望对你有一定的参考价值。
我想通过安装盾获取dir我的设置。我使用命令参数Setup.exe /path=[SETUPEXEDIR]log.txt
我的设置位置是DesktopmyappSetup.exe
当使用[SETUPEXEDIR]返回临时文件夹时我想要使用[SETUPEXEDIR]返回我的Setup.exe位置。
我使用installshield 2016版本23 SP 2.我使用MSI脚本。
我想获取位置并在命令参数先决条件中使用。
有点难以理解你的要求,但据我所知,你想知道setup.exe运行的位置?
变量
- 第一个问题是:您使用的是什么版本的Installshield?
- 第二个问题是:您使用的是Basic MSI还是Installscript MSI?
- 第三个问题是:您使用的是哪种类型的发布媒体?
- 可能还有更多相关问题......
明智的一句话:如果您确实使用的是Installscript MSI,您应该知道它是一个非常错误的项目类型,您应该认真考虑切换到基本MSI以避免悲伤。如果您愿意,我可以提供更多相关信息。我不得不完全抛弃Installscript MSI,以免我的部署问题消失。
Installshield属性
似乎不同版本的Installshield可能表现不同,并且对这些文件夹属性/变量具有不同的支持。它似乎也可能不适用于所有类型的发布媒体。最后它们可能只分别在Basic MSI或Installscript MSI中工作。我找到的属性是:PACKAGE_LOCATION,SETUPEXEDIR和SRCDIR。在最新版本的Installshield中似乎也有一个名为GetCurrentDir()的Installscript方法,但文档警告使用它(请参阅链接)。
请按顺序访问上面的链接,并详细了解每个属性(或方法)的限制。使用符合您的要求和方案的选项(如果有)非常重要。例如,PACKAGE_LOCATION仅适用于Installscript MSI,SETUPEXEDIR由Setup.exe设置。如果最终用户直接运行.msi包,则不会设置SETUPEXEDIR。
MSI内置属性
在我看来,获得内置的MSI属性SourceDir可能是一个尝试的选项。我的快速测试表明它适用于InstallScript和Basic MSI。但是,我不知道这是否适用于所有版本的Windows Installer。请测试各种Windows版本以确保。
您还应该了解使用the documentation for SETUPEXEDIR中描述的SourceDir的潜在问题。这适用于编译为包含所有文件的单个压缩setup.exe的设置 - 此启动程序将MSI文件解压缩到临时位置并从那里运行。当我尝试使用未压缩的网络图像时,可以正常使用SourceDir。
最后,如果您使用setup.exe来压缩所有文件并在系统上启用MSI的缓存,那么您将从内部的某个位置运行:C:WINDOWSDownloaded Installations{GUID}
。
所有这些在较新版本的Installshield上可能会有所不同。我正在测试我可用的古代版本。请仔细测试您的版本。
我还应该提到OriginalDatabase内置的MSI属性。查看链接以获取有关如何设置的文档。
一些链接:
用于测试的Installscript函数
仅供参考,这里有一个快速而脏的功能,可以从Installshield自定义操作中测试这些属性(这适用于其他人,如果没有经过测试,可能会发现这一点):
function TestFolderProperties(hMSI)
STRING svName;
NUMBER nvSize;
begin
// MSI properties
nvSize = 256;
MsiGetProperty (hMSI, "SETUPEXEDIR", svName, nvSize);
MessageBox ("SETUPEXEDIR: " + svName, INFORMATION);
MsiGetProperty (hMSI, "SourceDir", svName, nvSize);
MessageBox ("SourceDir: " + svName, INFORMATION);
MsiGetProperty (hMSI, "OriginalDatabase", svName, nvSize);
MessageBox ("OriginalDatabase: " + svName, INFORMATION);
// System Variables
MessageBox ("SRCDIR: " + SRCDIR, INFORMATION);
// PACKAGE_LOCATION is not available in my version of Installshield, enable and test
//MessageBox ("PACKAGE_LOCATION: " + PACKAGE_LOCATION, INFORMATION);
end;
请记住将导出添加到setup.rul文件的顶部:
export prototype TestFolderProperties(HWND);
测试编译以进行验证,然后创建一个Installscript自定义操作并将其按顺序放置。为自定义操作进行“返回处理”同步(忽略退出代码)。我在序列中的InstallFinalize之前使用立即模式执行。重建您的版本并运行它。尝试不同的发布版本配置(msi包含外部源文件,MSI仅包含内部压缩文件,setup.exe启动器包含外部文件,setup.exe包含所有压缩文件,setup.exe包含缓存,setup.exe没有缓存等。 ..行为可能不同)。
以上是关于获取dir setup安装盾牌的主要内容,如果未能解决你的问题,请参考以下文章