• 4087阅读
  • 7回复

[提问]Qt Installer framework製作安裝包沒有檔案屬性 [复制链接]

上一主题 下一主题
离线yishiang0217
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-05
平台:Windows 10

各位板友大家好,
我使用Qt Installer framework進行安裝包製作,
現在問題是安裝包產生後,對安裝包按右鍵查看「內容->詳細資料」,
發現並沒有版本號、產品、描述、檔案名稱...等說明,
想請問板上大神我該如何達到我的目的呢?
謝謝大家。
离线笑颜

只看该作者 1楼 发表于: 2017-09-05
感觉你这个应该要重新编译Installer这个APP,加上你的那些属性。因为我看过源码,那个工具是直接基于installer这个APP,把你的安装包写入这个APP文件末尾的,QT提供的是编译时没有加任何版本信息的。
离线yishiang0217

只看该作者 2楼 发表于: 2017-09-05
回 笑颜 的帖子
笑颜:感觉你这个应该要重新编译Installer这个APP,加上你的那些属性。因为我看过源码,那个工具是直接基于installer这个APP,把你的安装包写入这个APP文件末尾的,QT提供的是编译时没有加任何版本信息的。 (2017-09-05 17:52) 

笑顏大大,您也太強了吧!!

我是採用binarycreator.exe來產生自製的安裝包的,
Qt Installer framework是於安裝Qt時就有添加這個工具,
我並不太清楚您說的「重新编译Installer」的意思...
能請您再詳述嗎? 謝謝您。

p.s. 附上我所參考連結http://www.cnblogs.com/csuftzzk/p/qt-installer-framework.html

离线笑颜

只看该作者 3楼 发表于: 2017-09-05
回 yishiang0217 的帖子
yishiang0217:
笑顏大大,您也太強了吧!!
我是採用binarycreator.exe來產生自製的安裝包的,
Qt Installer framework是於安裝Qt時就有添加這個工具,
.......

意思就是,你去获取一份Qt Installer framework的源码自己编译,在编译的时候加入你想要的版本信息到sdk这个APP里面,记错了,installer是编的lib
离线笑颜

只看该作者 4楼 发表于: 2017-09-05
回 yishiang0217 的帖子
yishiang0217:
笑顏大大,您也太強了吧!!
我是採用binarycreator.exe來產生自製的安裝包的,
Qt Installer framework是於安裝Qt時就有添加這個工具,
.......

yishiang0217:

笑顏大大,您也太強了吧!!

我是採用binarycreator.exe來產生自製的安裝包的,
Qt Installer framework是於安裝Qt時就有添加這個工具,
.......

意思就是,你去获取一份Qt Installer framework的源码自己编译,在编译的时候加入你想要的版本信息到sdk这个APP里面,记错了,installer是编的lib[attachment=17791]
离线yishiang0217

只看该作者 5楼 发表于: 2017-09-06
回 笑颜 的帖子
笑颜:意思就是,你去获取一份Qt Installer framework的源码自己编译,在编译的时候加入你想要的版本信息到sdk这个APP里面,记错了,installer是编的lib[图片] (2017-09-05 22:55)

哇.. 真的是蠻厲害的!!我大概明白了,就是我需要重新編譯Qt Installer framework的源碼,編譯時加入想要的版本信息,產生出來的Qt Installer framework相關程序假設為A,再用A來製作安裝包,產生出來的安裝包就會都是這個版本號了。

不曉得我的理解有沒有錯誤呢...?
--
另外有兩個問題想再麻煩您指導..
1. 我嘗試利用config.xml內的標簽「RunProgram」於安裝包完成後註冊安裝包內的Windows Service程序,「RunProgramArguments」是有給參數「-i」的,安裝包完成後,看得出來console是有跳出來的,但也許註冊失敗,試著使用管理員權限執行安裝包還是無法完成服務程序的註冊,我不太確定是哪邊錯誤了,稍晚我會試試用installscript.qs來註冊。

2. 在installscript.qs中新增的shortcut,在Uninstall後無法被移除,
看了官方文檔,也只看到CreateShortCut,卻沒有移除路徑的Operation。
http://doc.qt.io/qtinstallerframework/operations.html

我的代碼如下:
Component.prototype.createOperations = function()
{
    try {
        // call the base create operations function
        component.createOperations();

        if (systemInfo.productType === "windows") {
            component.addOperation("CreateShortcut", "@TargetDir@/RAIDMonitorSetting.exe", "@StartMenuDir@/RAIDMonitorSetting.lnk");
            component.addOperation("CreateShortcut", "@TargetDir@/RAIDMonitorSetting.exe", "@HomeDir@/Desktop/RAIDMonitorSetting.lnk");

            component.addOperation("CreateShortcut", "@TargetDir@/Unistall-RAIDMonitor.exe", "@StartMenuDir@/Uninstall.lnk");
        }        
    } catch (e) {
        console.log(e);
    }
}
想請問您是如何移除的呢?
--
不好意思問題有點多,若您方便的話也請您不吝指導後輩,非常感謝:)
离线笑颜

只看该作者 6楼 发表于: 2017-09-06
回 yishiang0217 的帖子
yishiang0217:哇.. 真的是蠻厲害的!!我大概明白了,就是我需要重新編譯Qt Installer framework的源碼,編譯時加入想要的版本信息,產生出來的Qt Installer framework相關程序假設為A,再用A來製作安裝包,產生出來的安裝包就會都是這個版本號了。
不曉得我的理解有沒有錯誤呢...?
--
....... (2017-09-06 10:19) 

关于用法,你自己看安装包里面的example吧,我对用法也存在很多问题。另外,自己编译得是静态版本的QT库,并且很多依赖关系需要处理好,所以挺麻烦的。
离线yishiang0217

只看该作者 7楼 发表于: 2017-09-08
回 笑颜 的帖子
笑颜:关于用法,你自己看安装包里面的example吧,我对用法也存在很多问题。另外,自己编译得是静态版本的QT库,并且很多依赖关系需要处理好,所以挺麻烦的。 (2017-09-06 10:40) 

非常感謝您的回覆,我覺得這方面討論實在太少了,研究了兩天還是卡住了,因為我的是Windows Service,安裝包完成後要安裝服務,解除安裝包時要移除服務。

網上找了外國許多討論,沒一個是的正常可用的,只好靜下心來仔細看文檔和網路的範例。

大致上都是在Component的建構子內connect一些signal,如:finishButtonClicked..等。
然後以下是我用了的幾種方法..
    if (installer.value("os") == "win" && installer.isInstaller() && installer.status == QInstaller.Success)
    {
      //component.addOperation("Execute", "cmd /C @TargetDir@/RAIDMonitorSetting.exe");
      //component.addOperation("Execute", "@TargetDir@/RAIDMonitor.exe -i");
        //component.addElevatedOperation("Execute", "@TargetDir@/RAIDMonitorSetting.exe");
        //var argList = ["-i", "@TargetDir@/RAIDMonitor.exe"];
        installer.execute("@TargetDir@/RAIDMonitor.exe");            
    }    
--
RAIDMonitorSetting.exe是個不用帶參數的UI,居然也不行..
connect這部份是參考官方example中的RegisterFileExtension的用法,
可能我要先找出如何寫一些log出來...
快速回复
限100 字节
 
上一个 下一个