【问题标题】:installshield with custom action带有自定义操作的 installshield
【发布时间】:2011-12-31 08:18:09
【问题描述】:

我正在使用 installsheild 2012 Premier 创建一个基本的 msi 项目。我有两个问题。

1.) MSI 在创建正在安装的应用程序的文件夹和文件后,需要运行自定义 exe。它只需要在安装应用程序时执行一次。

2.) MSI 还需要告诉正在运行的自定义 exe,用户选择了哪种语言来运行 MSI。

我不知道问题 2。关于问题 1,我的尝试如下所述:

按照我现在的设置方式,它在开始时运行一次,甚至在创建产品的文件和文件夹之前。以下是我的设置

然后点击下一步进入下面的屏幕......

现在,为了仅在创建文件和文件夹后运行自定义 exe,如果我将上面第一张图片中的 In-Script 执行从“立即执行”更改为“提交执行”并继续到下一个屏幕,然后我尝试过的任何组合都会出现以下错误

请帮帮我。感谢您的宝贵时间。

【问题讨论】:

    标签: installation windows-installer installshield


    【解决方案1】:

    对于脚本内执行组合,您应该使用deferredcommit 执行。如果您的自定义操作需要管理员权限,则应在系统上下文中延迟或提交。

    延迟或提交操作不会在 InstallUISequence 中运行,因此在 Insert Into Sequence 对话框中确保 Install UI Sequence 组合设置为:

    <Absent from sequence>
    

    延迟操作在InstallFinalize 之前运行。由于您想在安装文件后运行自定义操作,您可以将 Install Execute Sequence 组合设置为:

    After InstallFiles
    

    安装语言存储在ProductLanguage 属性中。所以你可以在你的自定义操作命令行中use it directly,例如:

    [ProductLanguage]
    

    此属性包含语言标识符。您可以在此处找到标识符列表:http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx

    【讨论】:

    • 谢谢。我设法弄清楚了。然而,我使用了“After InstalInitialize”而不是“After InstallFiles”。以后这样下去会不会有什么问题?
    • InstallInitialize 在安装文件之前执行。因此,您的自定义操作将无法访问已安装的文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多