自定义操作配置如下:
自定义操作名称:MyCustomAction
VBScript文件名:
<PathVar01>\MyFolder\MyVBSfile.vbsScriptFunction:MyFunction
返回处理:同步(检查退出代码)
脚本执行:立即执行
它通过以下InstallScript代码执行:
result = MsiDoAction(ISMSI_HANDLE,"MyCustomAction");
Run Code Online (Sandbox Code Playgroud)
当安装程序在InstallScript中到达该行时,安装程序会显示错误警告,说明:
"错误1720.此Windows Installer程序包存在问题.无法运行此安装所需的脚本.请与您的支持人员或程序包供应商联系."
MsiDoAction返回的结果代码是'1603',根据winerror.h,它是:
//
// MessageId: ERROR_INSTALL_FAILURE
//
// MessageText:
//
// Fatal error during installation.
//
#define ERROR_INSTALL_FAILURE 1603L
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我开始怀疑文件是否正确包含在内.然而,我指向正确的文件,我已经尝试通过InstallShield支持文件包含VBS,认为这将确保文件与设置一起出现,但结果相同.
我有一堆.SQL脚本放在InstallShield的"支持文件"视图中.
我想在我的自定义操作中访问这些SQL脚本(通过DTF).我怎样才能做到这一点?
我有一个小应用程序,其exe必须在Windows Server 2008中工作.但在Win Server 2k8中,只有选择了以管理员身份运行选项,即使用户具有管理员优先权,它也能正常工作.
通过选择该文件的属性始终以admin身份运行,在兼容性选项卡中将解决该问题.
但我必须在安装时启用此属性.
我正在Installshield 2009中构建安装程序.我的问题是如何从installsield启用此属性.
如何让Exe以管理员身份运行.
任何一个pleeasse hellpp ......
提前致谢..
Jijesh.
有谁知道注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{xxxx}-->UninstallString 的用途吗?
我的印象是“添加/删除程序”使用 MsiExec 来卸载任何应用程序。但事实并非如此,“添加/删除程序”不使用它。是否有任何其他注册表值与添加/删除程序使用的类似?
为asp.net应用程序创建安装程序的最佳工具是什么?我的目标是:
我试图了解我的 setup.msi 在安装时如何插入注册表值。在 Orca 编辑器中我看到这样的,

安装 msi 后,在日志文件中我看到这样的内容,
MSI (s) (A8:B4) [16:27:28:674]: Executing op: ComponentRegister(ComponentId={45667B7F-9DC7-43B7-BE9E-3215ED1B1985},KeyPath=02:\SOFTWARE\myCompany\MySolution\Plugins\MyProduct\ProductCode,State=3,,Disk=1,SharedDllRefCount=0,BinaryType=0)
Run Code Online (Sandbox Code Playgroud)
我想做这个机制的逆向工程,有人可以帮助我理解这一点吗?我想使用 WIX 重新创建相同的内容,所以我只是尝试如下
<Component Id="RegistryEntries" Guid="*">
<RegistryKey Root="HKLM"
Key="Software\Microsoft\MyCompany"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="MyApp" Value="[INSTALLLOCATION]" KeyPath="yes"/>
<RegistryValue Type="string" Name="Configuration Files" Value="[INSTALLLOCATIONCONFIG]"/>
<RegistryValue Type="string" Name="Configuration Files1" Value="[INSTALLLOCATIONCONFIG1]"/>
</RegistryKey>
</Component>
Run Code Online (Sandbox Code Playgroud)
当我构建 msi 并编辑 Orca 时,我会看到如下所示,

我应该怎么做才能获得如上图所示的 msi?
我正在使用Installshield 2014和2011。正在使用主要升级和自动构建脚本来处理构建。InstallShield是独立的构建版本。对彼此而言。
现在,Windows 2003服务器上的Installshield 2011一切正常。我可以使用自动化界面打开一个项目,更改产品代码(用于主要升级),然后在构建安装程序之前将其保存。
这样的代码在vbs文件中如下所示:
Dim oISM, oGUID
Set oGUID = CreateObject("InstallShield.GUID")
Set oISM = CreateObject("IswiAuto17.ISWiProject")
oISM.OpenProject strInstallShieldProjectFile
oISM.ProductCode = "{" & oGUID.CreateGUID( ) & "}"
oISM.SaveProject : oISM.CloseProject : set oISM = Nothing
Run Code Online (Sandbox Code Playgroud)
现在,我们已经升级到Windows 2012服务器和InstallShield2014。我已经仔细检查过,根据InstallShield,唯一需要的更改是版本号(从17更改为21)。
但是现在没有任何效果。如果我取出代码并将其放入自己的vbs文件中进行测试并运行,我将得到以下信息:
ActiveX组件无法创建对象:“ InstallShield.GUID”
在谷歌上看,我看到这是在64位模式下运行的。。。。我在32位模式下运行cmd提示符。 http://helpnet.flexerasoftware.com/installshield18helplib/AutomationInterface64Bit.htm
我尝试使用以下脚本调用脚本:%WINDIR%\ SYSWOW64 \ cmd.exe / c cscript
如此处建议的那样: 如何在64位计算机上以32位模式运行VBScript?
和其他地方。这没有用,因为我遇到了同样的错误。
我尝试删除该行,因为我确定可以用另一种方式创建Guid,然后重新运行它。
然后在尝试创建项目时得到了此消息:未知的运行时错误:'CreateObject'
谷歌再次出现,我检查了:https : //community.flexerasoftware.com/showthread.php?189788-Automation-error
和其他人。我尝试确保使用regsvr32注册了dll,并说它成功。但是在重新运行后,它给出了相同的错误。
我尝试直接处理InstallShield文档中的命令,以确保没有拼写错误,但又出现了相同的错误。
我什至尝试按此处所述切换“ sw”的大小写: 运行vbscript时Installshield Automation失败,错误是无法创建对象
同样,同样的错误。
我还尝试了切换到Powershell,因为Powershell更容易调试和阅读。
powershell代码很简单,如下所示:
$oIsm = new-object -comobject IswiAuto21.ISWiProject
$oISM.OpenProject("$file")
$oISM.ProductCode = "{" + [guid]::NewGuid() + "}" …Run Code Online (Sandbox Code Playgroud) 要求在安装时检测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) 我需要类似i6comp的东西,但是需要更改reg列表而不是文件列表.
这样的事情存在吗?
编辑:我知道有办法监视对ergistry的更改但有没有办法通过检查安装文件来做到这一点?
我们使用Installshield 2008专业版中的InstallScript MSI Project开发了该项目.在项目中,我们添加了一个条件,以便不应在较高版本上安装旧版本.
我们面临的问题是考虑产品版本为1.0.0925.1的新项目,并添加条件以避免更高版本而不是更低版本.为了增加这个条件,我从上面的链接中得到了它; 在主要升级的Common选项卡中我已经启用了升级提示; 因为将来新设置1.0.0925.2会要求升级.
现在我将使用产品版本1.0.0925.2创建新设置,在主要升级的Common选项卡下,我将禁用提示,因为; 如果用户尝试在1.0.0925.2上安装1.0.0925.1,则不应允许; 在这种情况下它工作正常; 一个流行音乐说"已安装此产品的另一个版本.此版本的安装无法继续.要配置或删除此产品的现有版本,请使用控制面板上的添加/删除程序.{2D0E6C46-1CC2-4174-8AAC -0B39312D8ECE}"
现在几天之后会有更改,并且将再次使用版本1.0.0925.3创建另一个设置,因为将禁用升级提示.现在我尝试在1.0.0925.2上安装1.0.0925.3,显然应该升级; 但问题出现了,而不是询问"设置将执行升级",它会说"已安装此产品的另一个版本.此版本的安装无法继续.要配置或删除此产品的现有版本,请使用添加/删除控制面板上的程序.{2D0E6C46-1CC2-4174-8AAC-0B39312D8ECE}"由于我已禁用1.0.0925.2的提示,因此不允许升级.如果我启用此功能,则每次要求升级时都会运行任何设置,无论是较高版本的较低版本还是较低版本的较高版本.
即使我想在Installscript中检查产品版本,但我不知道如何处理如果我设法获得已安装设置的产品版本以及当前运行设置的方法.但是如何在运行时更改升级提示,因为它是在设计时设置的.
我正在尝试使用InstallShield 2013创作工具创建一个InstallScript项目.到目前为止,我刚刚使用默认的对话框和皮肤.现在我需要自定义它们以满足我的需求,但我发现帮助文档中的链接缺乏或损坏.我想知道是否有人知道如何创建自定义对话框皮肤或者可以指向正确的方向.
我将通过installshield安装.NET应用程序。我的.NET应用程序依赖于.NET Framework 4.5.2。因此,如果开始安装后未在系统上找到.NET Framework 4.5.2必备软件,则我不希望安装继续进行。如何在Installshield 2015中实现此目标?
更新:当我尝试按照Shahzad的建议进行可分配路线时,出现以下错误:
您的项目包含installshield先决条件。需要setup.exe安装程序启动器。
我正在处理的项目是一个基本的MSI项目。我发现它应该创建一个a setup.exe作为输出来解决此错误,但是我没有看到这里setup.exe建议的任何选项卡。我会在某处的标签下看到它吗?Project AssistantInstallation Designer
installation windows-installer installshield installshield-2015
我以前使用过InstallAware和InstallShield,它们很难使用,当出现问题时很难找到并解决问题。
我的问题是为什么我们不能使用 C# 编写的 Windows 应用程序来执行此操作。我知道 .Net Framework 可能不会安装在目标计算机上,所以我想知道为什么没有人使用过这种架构:我将使用 IntallSiheld(或任何其他类似工具)创建一个简单的安装程序来安装 .Net Framework,然后它提取并运行我自己的 Windows 应用程序,该应用程序是我在提升模式下使用 C# 编写的。我的应用程序将运行一个带有“后退”和“下一步”按钮的向导,我将处理其中的所有内容(复制文件、创建和启动 Windows 服务、添加注册表值、创建防火墙扩展等)。有人曾经这样做过吗?有什么事情吗?阻止人们这样做?
windows windows-installer installshield installaware winforms
installshield ×13
installation ×3
wix ×3
registry ×2
vbscript ×2
.net ×1
c# ×1
dtf ×1
installaware ×1
installer ×1
powershell ×1
runas ×1
version ×1
windows ×1
winforms ×1